Safe Haskell | None |
---|---|
Language | Haskell2010 |
queues Follows pipes-concurrency
Synopsis
- data Queue a
- queueC :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m l
- queueE :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m r
- waitCancel :: MonadConc m => m b -> m a -> m b
- ends :: MonadSTM stm => Queue a -> stm (a -> stm (), stm a)
- withQE :: MonadConc m => Queue a -> (Queue a -> m (Box m a a, m ())) -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m r
- withQC :: MonadConc m => Queue a -> (Queue a -> m (Box m a a, m ())) -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m l
- toBox :: MonadSTM stm => Queue a -> stm (Box stm a a, stm ())
- toBoxM :: MonadConc m => Queue a -> m (Box m a a, m ())
- liftB :: MonadConc m => Box (STM m) a b -> Box m a b
- concurrentlyLeft :: MonadConc m => m a -> m b -> m a
- concurrentlyRight :: MonadConc m => m a -> m b -> m b
- fromAction :: MonadConc m => (Box m a b -> m r) -> Cont m (Box m b a)
- fuseActions :: MonadConc m => (Box m a b -> m r) -> (Box m b a -> m r') -> m r'
Documentation
Queue
specifies how messages are queued
queueC :: MonadConc m => (Committer m a -> m l) -> (Emitter m a -> m r) -> m l Source #
create an unbounded queue, returning the emitter result
queueE :: 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
withQE :: MonadConc m => Queue a -> (Queue a -> m (Box m a a, m ())) -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m r Source #
connect a committer and emitter action via spawning a queue, and wait for both to complete.
withQC :: MonadConc m => Queue a -> (Queue a -> m (Box m a a, m ())) -> (Committer m a -> m l) -> (Emitter m a -> m r) -> m l Source #
connect a committer and emitter action via spawning a queue, and wait for both to complete.
toBox :: MonadSTM stm => Queue a -> stm (Box stm a a, stm ()) Source #
turn a queue into a box (and a seal)
toBoxM :: MonadConc m => Queue a -> m (Box m a a, m ()) Source #
turn a queue into a box (and a seal), and lift from stm to the underlying monad.
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.