Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- tryDequeue :: Members [Monitor Restart, Reader QueueName, Log, Embed IO] r => Connection -> Sem r (Either Text (Maybe UUID))
- listen :: Members [Database, Reader QueueName, Log, Embed IO] r => Sem r ()
- unlisten :: forall e r. Members [Database !! e, Reader QueueName, Log] r => Sem r ()
- processMessages :: Ord t => NonEmpty (Uuid (Queued t d)) -> NonEmpty d
- initQueue :: forall e d t r. Ord t => Members [Store UUID (Queued t d) !! e, Reader QueueName, Database, Log, Embed IO] r => (d -> Sem r ()) -> Sem r ()
- withPqConn :: Member (Final IO) r => Connection -> (Connection -> Sem r a) -> Sem r (Either Text a)
- dequeueAndProcess :: forall d t dt r. Ord t => Members [Monitor Restart, Reader QueueName, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Time t dt, Stop DbError, Log, Embed IO] r => TBMQueue d -> Connection -> Sem r ()
- dequeue :: forall d t dt r. Ord t => Members [Monitor Restart, Reader QueueName, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Stop DbError, Time t dt, Log, Embed IO] r => TBMQueue d -> Sem r ()
- dequeueLoop :: forall d t dt u r. Ord t => TimeUnit u => Members [Monitor Restart, Reader QueueName] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Time t dt, Log, Resource, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> TBMQueue d -> Sem r ()
- startDequeueLoop :: forall d t dt u r. Ord t => TimeUnit u => Members [RestartingMonitor, Reader QueueName] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Resource, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> TBMQueue d -> Sem r ()
- interpretInputQueue :: forall d r. Member (Embed IO) r => TBMQueue d -> InterpreterFor (Input (Maybe d)) r
- dequeueThread :: forall d t dt u r. Ord t => TimeUnit u => Members [RestartingMonitor, Reader QueueName, Resource] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Async, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> Sem r (Async (Maybe ()), TBMQueue d)
- interpretInputDbQueueListen :: forall (name :: Symbol) d t dt u r. Ord t => TimeUnit u => KnownSymbol name => Members [RestartingMonitor, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Resource, Async, Embed IO] r => u -> (DbError -> Sem r Bool) -> InterpreterFor (Input (Maybe d)) r
- interpretInputQueueDb :: forall qname u t dt d diff r. TimeUnit u => TimeUnit diff => Torsor t diff => Queue qname t => Members [Store UUID (Queued t d) !! DbError, Databases] r => Members [Time t dt, Log, Resource, Async, Race, Embed IO, Final IO] r => u -> ClockSkewConfig -> (DbError -> Sem r Bool) -> InterpreterFor (Input (Maybe d)) r
Documentation
tryDequeue :: Members [Monitor Restart, Reader QueueName, Log, Embed IO] r => Connection -> Sem r (Either Text (Maybe UUID)) Source #
Try to fetch a notification, and if there is none, wait on the connection's file descriptor until some data is received. This connection will be fully blocked when waiting, so it must not be shared with other parts of the application.
TODO Could it be possible to share a connection among all queues, only for waiting?
initQueue :: forall e d t r. Ord t => Members [Store UUID (Queued t d) !! e, Reader QueueName, Database, Log, Embed IO] r => (d -> Sem r ()) -> Sem r () Source #
withPqConn :: Member (Final IO) r => Connection -> (Connection -> Sem r a) -> Sem r (Either Text a) Source #
dequeueAndProcess :: forall d t dt r. Ord t => Members [Monitor Restart, Reader QueueName, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Time t dt, Stop DbError, Log, Embed IO] r => TBMQueue d -> Connection -> Sem r () Source #
dequeue :: forall d t dt r. Ord t => Members [Monitor Restart, Reader QueueName, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Stop DbError, Time t dt, Log, Embed IO] r => TBMQueue d -> Sem r () Source #
dequeueLoop :: forall d t dt u r. Ord t => TimeUnit u => Members [Monitor Restart, Reader QueueName] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Time t dt, Log, Resource, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> TBMQueue d -> Sem r () Source #
startDequeueLoop :: forall d t dt u r. Ord t => TimeUnit u => Members [RestartingMonitor, Reader QueueName] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Resource, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> TBMQueue d -> Sem r () Source #
interpretInputQueue :: forall d r. Member (Embed IO) r => TBMQueue d -> InterpreterFor (Input (Maybe d)) r Source #
dequeueThread :: forall d t dt u r. Ord t => TimeUnit u => Members [RestartingMonitor, Reader QueueName, Resource] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Async, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> Sem r (Async (Maybe ()), TBMQueue d) Source #
interpretInputDbQueueListen :: forall (name :: Symbol) d t dt u r. Ord t => TimeUnit u => KnownSymbol name => Members [RestartingMonitor, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Resource, Async, Embed IO] r => u -> (DbError -> Sem r Bool) -> InterpreterFor (Input (Maybe d)) r Source #
interpretInputQueueDb :: forall qname u t dt d diff r. TimeUnit u => TimeUnit diff => Torsor t diff => Queue qname t => Members [Store UUID (Queued t d) !! DbError, Databases] r => Members [Time t dt, Log, Resource, Async, Race, Embed IO, Final IO] r => u -> ClockSkewConfig -> (DbError -> Sem r Bool) -> InterpreterFor (Input (Maybe d)) r Source #