Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
- data QueueWorker j = QueueWorker {
- qw_execute :: j -> IO JobResult
- newQueueWorker :: (j -> IO JobResult) -> QueueWorker j
- data JobResult
- data Queue j
- newQueue :: QueueBackend j -> QueueWorker j -> Queue j
- mapQueue :: (a -> b) -> (b -> a) -> Queue a -> Queue b
- enqueueJob :: j -> Queue j -> IO Bool
- getQueueBackend :: Queue j -> QueueBackend j
- getQueueWorker :: Queue j -> QueueWorker j
- data QueueBackend j = Monad m => QueueBackend {
- qb_lift :: forall a. m a -> IO a
- qb_enqueue :: j -> m Bool
- qb_dequeue :: m (tx, j)
- qb_confirm :: tx -> m ()
- qb_rollback :: tx -> m ()
- qb_reportProgress :: tx -> m ()
- qb_progressReportInterval :: !TimeSpan
- mapBackend :: (a -> b) -> (b -> a) -> QueueBackend a -> QueueBackend b
- basicChanBackend :: forall j. IO (QueueBackend j)
- workStep :: Queue j -> IO ()
- data LocalWorkerConfig = LocalWorkerConfig {}
- localQueueWorker :: LocalWorkerConfig -> Queue j -> IO ()
Worker descriptions
data QueueWorker j Source #
QueueWorker | |
|
newQueueWorker :: (j -> IO JobResult) -> QueueWorker j Source #
Result of the job
Queue control
newQueue :: QueueBackend j -> QueueWorker j -> Queue j Source #
Create a new queue description
getQueueBackend :: Queue j -> QueueBackend j Source #
getQueueWorker :: Queue j -> QueueWorker j Source #
(persistent) queue backends
data QueueBackend j Source #
Monad m => QueueBackend | |
|
mapBackend :: (a -> b) -> (b -> a) -> QueueBackend a -> QueueBackend b Source #
basicChanBackend :: forall j. IO (QueueBackend j) Source #
A very basic in memory backend using only data structures from the base library. It should only be used for testing and serves as an implementation example
execution strategies
workStep :: Queue j -> IO () Source #
Execute a single work step: attempt a dequeue and run the job. Use
to implement a queue worker, such as localQueueWorker
A local worker
localQueueWorker :: LocalWorkerConfig -> Queue j -> IO () Source #
(Concurrently) run pending jobs on local machine in current process