box-0.4.0: boxes

Safe HaskellNone
LanguageHaskell2010

Box.Queue

Description

queues Follows pipes-concurrency

Synopsis

Documentation

data Queue a Source #

Queue specifies how messages are queued

queue :: MonadConc m => (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m (l, r) Source #

create an unbounded queue

queueC :: MonadConc m => (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m l Source #

create an unbounded queue, returning the committer result

queueC' :: MonadConc m => (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m l Source #

create an unbounded queue, returning the committer result

queueE :: MonadConc m => (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m r Source #

create an unbounded queue, returning the emitter result

queueE' :: MonadConc m => (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m r Source #

queueCM :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m l Source #

create an unbounded queue, returning the emitter result

queueCM' :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m l Source #

create an unbounded queue, returning the emitter result

queueEM :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m r Source #

create an unbounded queue, returning the emitter result

queueEM' :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m r Source #

create an unbounded queue, returning the emitter result

waitCancel :: MonadConc m => m b -> m a -> m b Source #

wait for the first action, and then cancel the second

ends :: MonadSTM stm => Queue a -> stm (a -> stm (), stm a) Source #

create a queue, returning the ends

withQ :: MonadConc m => Queue a -> (Queue a -> STM m (Box (STM m) a a, STM m ())) -> (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m (l, r) Source #

connect a committer and emitter action via spawning a queue, and wait for both to complete.

withQE :: MonadConc m => Queue a -> (Queue a -> STM m (Box (STM m) a a, STM m ())) -> (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m r Source #

connect a committer and emitter action via spawning a queue, and wait for emitter to complete.

withQC :: MonadConc m => Queue a -> (Queue a -> STM m (Box (STM m) a a, STM m ())) -> (Committer (STM m) a -> m l) -> (Emitter (STM m) a -> m r) -> m l Source #

connect a committer and emitter action via spawning a queue, and wait for committer to complete.

toBox :: MonadSTM stm => Queue a -> stm (Box stm a a, stm ()) Source #

turn a queue into a box (and a seal)

concurrentlyLeft :: MonadConc m => m a -> m b -> m a Source #

run two actions concurrently, but wait and return on the left result.

concurrentlyRight :: MonadConc m => m a -> m b -> m b Source #

run two actions concurrently, but wait and return on the right result.