Safe Haskell | None |
---|---|
Language | Haskell2010 |
A better, more safe implementation of the Erlang/OTP gen_server behaviour. **PLANNED TODO** @since 0.23.0
Synopsis
- class (Typeable (GenServerState a), NFData (GenServerState a)) => GenServer a eff where
- type GenServerState a :: Type
- genServerInit :: ('[Interrupts, Logs] <:: eff, SetMember Process (Process q) eff) => a -> Eff eff (GenServerState a)
- genServerHandle :: ('[Interrupts, Logs] <:: eff, SetMember Process (Process q) eff) => Api a v -> Eff (State (GenServerState a) ': eff) (ApiReply v)
- genServerInterrupt :: ('[Interrupts, Logs] <:: eff, SetMember Process (Process q) eff) => InterruptReason -> Eff (State (GenServerState a) ': eff) ()
- genServerInfoCommand :: Api a (Synchronous Text)
- type family ApiReply (s :: Synchronicity) where ...
- data SomeMessage a = MkSomeMessage
- runGenServer :: forall q e h a. (GenServer a e, SetMember Process (Process q) e, Member Interrupts e, LogsTo h e) => a -> Eff e (Server a)
Documentation
class (Typeable (GenServerState a), NFData (GenServerState a)) => GenServer a eff where Source #
type GenServerState a :: Type Source #
genServerInit :: ('[Interrupts, Logs] <:: eff, SetMember Process (Process q) eff) => a -> Eff eff (GenServerState a) Source #
genServerHandle :: ('[Interrupts, Logs] <:: eff, SetMember Process (Process q) eff) => Api a v -> Eff (State (GenServerState a) ': eff) (ApiReply v) Source #
genServerInterrupt :: ('[Interrupts, Logs] <:: eff, SetMember Process (Process q) eff) => InterruptReason -> Eff (State (GenServerState a) ': eff) () Source #
genServerInfoCommand :: Api a (Synchronous Text) Source #
type family ApiReply (s :: Synchronicity) where ... Source #
ApiReply (Synchronous t) = Maybe t | |
ApiReply Asynchronous = () |
data SomeMessage a Source #
Instances
data Api (SomeMessage a) s Source # | |
Defined in Control.Eff.Concurrent.Api.GenServer data Api (SomeMessage a) s where
|