This module implements a persistent, transactional collection with Queue interface as well as indexed access by key

use this version if you store in the queue different versions of largue structures, for example, documents and define a Data.RefSerialize instance. If not, use Data.Persistent.Queue.Binary Instead.

Here `QueueConstraints w r a`

means `Data.RefSerlialize.Serialize a`

- type RefQueue a = DBRef (Queue a)
- getQRef :: (Typeable a, QueueConstraints w r a) => String -> RefQueue a
- pop :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO a
- popSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM a
- pick :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO a
- flush :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO ()
- flushSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM ()
- pickAll :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO [a]
- pickAllSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM [a]
- push :: (Typeable a, QueueConstraints w r a) => RefQueue a -> a -> IO ()
- pushSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> a -> STM ()
- pickElem :: (Indexable a, Typeable a, QueueConstraints w r a) => RefQueue a -> String -> IO (Maybe a)
- pickElemSTM :: (Indexable a, Typeable a, QueueConstraints w r a) => RefQueue a -> String -> STM (Maybe a)
- readAll :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO [a]
- readAllSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM [a]
- deleteElem :: (Indexable a, Typeable a, QueueConstraints w r a) => RefQueue a -> a -> IO ()
- deleteElemSTM :: (Typeable a, Indexable a, QueueConstraints w r a) => RefQueue a -> a -> STM ()
- unreadSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> a -> STM ()
- isEmpty :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO Bool
- isEmptySTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM Bool

# Documentation

getQRef :: (Typeable a, QueueConstraints w r a) => String -> RefQueue aSource

get the reference to new or existing queue trough its name

read the first element in the queue and delete it (pop)

flush :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO ()Source

empty the queue (factually, it is deleted)

flushSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM ()Source

version in the STM monad

pickAll :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO [a]Source

return the list of all elements in the queue. The queue remains unchanged

pickAllSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM [a]Source

version in the STM monad

push :: (Typeable a, QueueConstraints w r a) => RefQueue a -> a -> IO ()Source

push an element in the queue

pushSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> a -> STM ()Source

version in the STM monad

pickElem :: (Indexable a, Typeable a, QueueConstraints w r a) => RefQueue a -> String -> IO (Maybe a)Source

return the first element in the queue that has the given key

pickElemSTM :: (Indexable a, Typeable a, QueueConstraints w r a) => RefQueue a -> String -> STM (Maybe a)Source

version in the STM monad

readAll :: (Typeable a, QueueConstraints w r a) => RefQueue a -> IO [a]Source

return the list of all elements in the queue and empty it

readAllSTM :: (Typeable a, QueueConstraints w r a) => RefQueue a -> STM [a]Source

a version in the STM monad

deleteElem :: (Indexable a, Typeable a, QueueConstraints w r a) => RefQueue a -> a -> IO ()Source

delete all the elements of the queue that has the key of the parameter passed

deleteElemSTM :: (Typeable a, Indexable a, QueueConstraints w r a) => RefQueue a -> a -> STM ()Source

verison in the STM monad