Safe Haskell | None |
---|---|
Language | Haskell2010 |
Web.Spock.Worker
- 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 #
Describe how you want jobs in the queue to be performed
data WorkerConfig #
Configure how the worker handles it's task and define the queue size
Constructors
WorkerConfig | |
Fields |
data WorkerConcurrentStrategy #
Configure the concurrent behaviour of a worker. If you want tasks executed
concurrently, consider using WorkerConcurrentBounded
data WorkerDef conn sess st err a #
Define a worker
Constructors
WorkerDef | |
Fields
|
newWorker :: (MonadTrans t, Monad (t (WebStateM conn sess st))) => WorkerDef conn sess st err a -> t (WebStateM conn sess st) (WorkQueue a) #
Create a new background worker and limit the size of the job queue.
data WorkResult #
Describes the outcome of a job after completion. You can repeat jobs
Constructors
WorkComplete | |
WorkError | |
WorkRepeatIn NominalDiffTime | |
WorkRepeatAt UTCTime |
Instances
Enqueue work
data WorkExecution #
Describes when a job should be executed
Constructors
WorkNow | |
WorkIn NominalDiffTime | |
WorkAt UTCTime |
addWork :: MonadIO m => WorkExecution -> a -> WorkQueue a -> m () #
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 #
Describe how you want to handle errors. Make sure you catch all exceptions that can happen inside this handler, otherwise the worker will crash!
Constructors
ErrorHandlerIO (InternalError err -> a -> IO WorkResult) | |
ErrorHandlerSpock (InternalError err -> a -> WebStateM conn sess st WorkResult) |