nqe-0.4.1: Concurrency library in the style of Erlang/OTP

Safe HaskellNone
LanguageHaskell2010

Control.Concurrent.NQE

Documentation

type Reply a = a -> STM () Source #

type Listen a = a -> STM () Source #

class Mailbox mbox where Source #

Minimal complete definition

mailboxEmptySTM, sendSTM, receiveSTM, requeueMsg

Methods

mailboxEmptySTM :: mbox msg -> STM Bool Source #

sendSTM :: msg -> mbox msg -> STM () Source #

receiveSTM :: mbox msg -> STM msg Source #

requeueMsg :: msg -> mbox msg -> STM () Source #

Instances
Mailbox TQueue Source # 
Instance details

Defined in Control.Concurrent.NQE.Process

Methods

mailboxEmptySTM :: TQueue msg -> STM Bool Source #

sendSTM :: msg -> TQueue msg -> STM () Source #

receiveSTM :: TQueue msg -> STM msg Source #

requeueMsg :: msg -> TQueue msg -> STM () Source #

Mailbox TBQueue Source # 
Instance details

Defined in Control.Concurrent.NQE.Process

Methods

mailboxEmptySTM :: TBQueue msg -> STM Bool Source #

sendSTM :: msg -> TBQueue msg -> STM () Source #

receiveSTM :: TBQueue msg -> STM msg Source #

requeueMsg :: msg -> TBQueue msg -> STM () Source #

Mailbox Inbox Source # 
Instance details

Defined in Control.Concurrent.NQE.Process

Methods

mailboxEmptySTM :: Inbox msg -> STM Bool Source #

sendSTM :: msg -> Inbox msg -> STM () Source #

receiveSTM :: Inbox msg -> STM msg Source #

requeueMsg :: msg -> Inbox msg -> STM () Source #

data Inbox msg Source #

Constructors

Mailbox mbox => Inbox (mbox msg) 
Instances
Mailbox Inbox Source # 
Instance details

Defined in Control.Concurrent.NQE.Process

Methods

mailboxEmptySTM :: Inbox msg -> STM Bool Source #

sendSTM :: msg -> Inbox msg -> STM () Source #

receiveSTM :: Inbox msg -> STM msg Source #

requeueMsg :: msg -> Inbox msg -> STM () Source #

mailboxEmpty :: (MonadIO m, Mailbox mbox) => mbox msg -> m Bool Source #

send :: (MonadIO m, Mailbox mbox) => msg -> mbox msg -> m () Source #

requeue :: Mailbox mbox => [msg] -> mbox msg -> STM () Source #

extractMsg :: Mailbox mbox => [(msg -> Maybe a, a -> b)] -> mbox msg -> STM b Source #

query :: (MonadIO m, Mailbox mbox) => (Reply b -> msg) -> mbox msg -> m b Source #

dispatch Source #

Arguments

:: (MonadIO m, Mailbox mbox) 
=> [(msg -> Maybe a, a -> m b)]

action to dispatch

-> mbox msg

mailbox to read from

-> m b 

dispatchSTM :: Mailbox mbox => [msg -> Maybe a] -> mbox msg -> STM a Source #

receive :: (MonadIO m, Mailbox mbox) => mbox msg -> m msg Source #

receiveMatch :: (MonadIO m, Mailbox mbox) => mbox msg -> (msg -> Maybe a) -> m a Source #

receiveMatchSTM :: Mailbox mbox => mbox msg -> (msg -> Maybe a) -> STM a Source #

fromSource Source #

Arguments

:: (MonadIO m, Mailbox mbox) 
=> ConduitT () msg m () 
-> mbox msg

will receive all messages

-> m () 

withSource :: (MonadUnliftIO m, Mailbox mbox) => ConduitT () msg m () -> mbox msg -> (Async () -> m a) -> m a Source #

supervisor :: (MonadUnliftIO m, Mailbox mbox) => Strategy -> mbox (SupervisorMessage m) -> [m ()] -> m () Source #

addChild :: (MonadUnliftIO n, MonadIO m, Mailbox mbox) => mbox (SupervisorMessage n) -> n () -> m (Async ()) Source #

removeChild :: (MonadUnliftIO n, MonadIO m, Mailbox mbox) => mbox (SupervisorMessage n) -> Async () -> m () Source #

type Publisher mbox ch msg = mbox (ControlMsg ch msg) Source #

publisher :: (MonadIO m, Mailbox mbox, Mailbox events, Mailbox ch, Eq (ch msg)) => Publisher mbox ch msg -> events msg -> m () Source #

boundedPublisher :: (MonadIO m, Mailbox mbox, Mailbox events) => Publisher mbox TBQueue msg -> events msg -> m () Source #

withPubSub :: (MonadUnliftIO m, Mailbox mbox) => Publisher mbox TQueue msg -> (TQueue msg -> m a) -> m a Source #

withBoundedPubSub :: (MonadUnliftIO m, Mailbox mbox) => Int -> Publisher mbox TBQueue msg -> (TBQueue msg -> m a) -> m a Source #