box-0.8.1: boxes
Safe HaskellNone
LanguageHaskell2010

Box.Queue

Description

STM Queues, based originally on pipes-concurrency

Synopsis

Documentation

data Queue a Source #

Queue specifies how messages are queued

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

Create an unbounded queue, returning the result from the Committer action.

>>> queueL New (\c -> glue c <$|> qList [1..3]) toListM

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

Create an unbounded queue, returning the result from the Emitter action.

>>> queueR New (\c -> glue c <$|> qList [1..3]) toListM
[3]

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

Create an unbounded queue, returning both results.

>>> queue Unbounded (\c -> glue c <$|> qList [1..3]) toListM
((),[1,2,3])

fromAction :: MonadConc m => (Box m a b -> m r) -> CoBox m b a Source #

Turn a box action into a box continuation

emitQ :: MonadConc m => Queue a -> (Committer m a -> m r) -> CoEmitter m a Source #

Hook a committer action to a queue, creating an emitter continuation.

commitQ :: MonadConc m => Queue a -> (Emitter m a -> m r) -> CoCommitter m a Source #

Hook a committer action to a queue, creating an emitter continuation.