{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
module Control.Concurrent.NQE.Conduit where
import Conduit
import Control.Concurrent.NQE.Process
import Data.Typeable
conduitMailbox ::
(MonadIO m, OutChan mbox, Typeable msg)
=> mbox msg
-> ConduitT msg o m ()
conduitMailbox :: mbox msg -> ConduitT msg o m ()
conduitMailbox mbox msg
mbox = (msg -> ConduitT msg o m ()) -> ConduitT msg o m ()
forall (m :: * -> *) i o r.
Monad m =>
(i -> ConduitT i o m r) -> ConduitT i o m ()
awaitForever (msg -> mbox msg -> ConduitT msg o m ()
forall (m :: * -> *) (mbox :: * -> *) msg.
(MonadIO m, OutChan mbox) =>
msg -> mbox msg -> m ()
`send` mbox msg
mbox)