distributed-process-0.7.8: src/Control/Distributed/Process/Management/Internal/Bus.hs
-- | Interface to the management event bus.
module Control.Distributed.Process.Management.Internal.Bus
( publishEvent
) where
import Control.Distributed.Process.Internal.CQueue
( enqueue
)
import Control.Distributed.Process.Internal.Types
( MxEventBus(..)
, Message
)
import Data.Foldable (forM_)
import System.Mem.Weak (deRefWeak)
publishEvent :: MxEventBus -> Message -> IO ()
publishEvent MxEventBusInitialising _ = return ()
publishEvent (MxEventBus _ _ wqRef _) msg = do
mQueue <- deRefWeak wqRef
forM_ mQueue $ \queue -> enqueue queue msg