Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type WorkHandler conn sess st err a = a -> ExceptT (InternalError err) (WebStateM conn sess st) WorkResult
- data WorkerConfig = WorkerConfig {}
- data WorkerConcurrentStrategy
- data WorkerDef conn sess st err a = WorkerDef {
- wd_config :: WorkerConfig
- wd_handler :: WorkHandler conn sess st err a
- wd_errorHandler :: ErrorHandler conn sess st err a
- newWorker :: (MonadTrans t, Monad (t (WebStateM conn sess st))) => WorkerDef conn sess st err a -> t (WebStateM conn sess st) (WorkQueue a)
- data WorkResult
- data WorkQueue a
- data WorkExecution
- addWork :: MonadIO m => WorkExecution -> a -> WorkQueue a -> m ()
- data ErrorHandler conn sess st err a
- = ErrorHandlerIO (InternalError err -> a -> IO WorkResult)
- | ErrorHandlerSpock (InternalError err -> a -> WebStateM conn sess st WorkResult)
- data InternalError a
Define a Worker
type WorkHandler conn sess st err a = a -> ExceptT (InternalError err) (WebStateM conn sess st) WorkResult Source #
Describe how you want jobs in the queue to be performed
data WorkerConfig Source #
Configure how the worker handles it's task and define the queue size
data WorkerConcurrentStrategy Source #
Configure the concurrent behaviour of a worker. If you want tasks executed
concurrently, consider using WorkerConcurrentBounded
data WorkerDef conn sess st err a Source #
Define a worker
WorkerDef | |
|
newWorker :: (MonadTrans t, Monad (t (WebStateM conn sess st))) => WorkerDef conn sess st err a -> t (WebStateM conn sess st) (WorkQueue a) Source #
Create a new background worker and limit the size of the job queue.
data WorkResult Source #
Describes the outcome of a job after completion. You can repeat jobs
Enqueue work
data WorkExecution Source #
Describes when a job should be executed
addWork :: MonadIO m => WorkExecution -> a -> WorkQueue a -> m () Source #
Add a new job to the background worker. If the queue is full this will block
Error Handeling
data ErrorHandler conn sess st err a Source #
Describe how you want to handle errors. Make sure you catch all exceptions that can happen inside this handler, otherwise the worker will crash!
ErrorHandlerIO (InternalError err -> a -> IO WorkResult) | |
ErrorHandlerSpock (InternalError err -> a -> WebStateM conn sess st WorkResult) |