polysemy-conc-0.12.0.0: Polysemy effects for concurrency
Safe HaskellSafe-Inferred
LanguageHaskell2010

Polysemy.Conc.Effect.Queue

Description

 
Synopsis

Documentation

data Queue d :: Effect where Source #

Abstracts queues like TBQueue.

For documentation on the constructors, see the module Polysemy.Conc.Data.Queue.

import Polysemy.Conc (Queue, QueueResult)
import Polysemy.Conc.Effect.Queue as Queue

prog :: Member (Queue Int) r => Sem r (QueueResult Int)
prog = do
  Queue.write 5
  Queue.write 10
  Queue.read >>= \case
    QueueResult.Success i -> fmap (i +) <$> Queue.read
    r -> pure r

Constructors

Read :: Queue d m (QueueResult d)

Read an element from the queue, blocking until one is available.

TryRead :: Queue d m (QueueResult d)

Read an element from the queue, immediately returning if none is available.

ReadTimeout :: TimeUnit t => t -> Queue d m (QueueResult d)

Read an element from the queue, blocking until one is available or the timeout expires.

Peek :: Queue d m (QueueResult d)

Read an element, leaving it in the queue, blocking until one is available.

TryPeek :: Queue d m (QueueResult d)

Read an element, leaving it in the queue, immediately returning if none is available.

Write :: d -> Queue d m ()

Write an element to the queue, blocking until a slot is available.

TryWrite :: d -> Queue d m (QueueResult ())

Write an element to the queue, immediately returning if no slot is available.

WriteTimeout :: TimeUnit t => t -> d -> Queue d m (QueueResult ())

Write an element to the queue, blocking until a slot is available or the timeout expires.

Closed :: Queue d m Bool

Indicate whether the queue is closed.

Close :: Queue d m ()

Close the queue.