natskell-0.0.0.1: internal/Plumbing/Pipeline/Broadcasting/Source.hs
module Pipeline.Broadcasting.Source where
import Conduit
import Lib.Logger.Types (LogLevel (..), MonadLogger (..))
import Queue.API (Queue, QueueItem, dequeue)
source :: (MonadLogger m , MonadIO m)
=> Queue
-> ConduitT () QueueItem m ()
source q = do
x <- liftIO (dequeue q)
case x of
Left err -> do
lift . logMessage Info $ ("dequeue failed: " ++ err)
Right i -> do
yield i
source q