-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | monad-control style typeclass and transformer instances for Process monad.
--
-- This package provides typeclasses and functions for lifting functions
-- and control operations (such as spawnLocal) from the Process
-- monad into transformer stacks based on the Process monad. It uses
-- MonadTransControl and a new typeclass
-- Control.Distributed.Process.Lifted.Class.MonadProcessBase which
-- plays the same role as MonadBaseControl. Instances are provided
-- for all the transformers types - so stacks based on any of
-- these (e.g. ReaderT Config Process a) can be used seamlessly.
--
-- The Control.Distributed.Process.Lifted module exports all the same
-- symbols as found in Control.Distributed.Process, but they are all
-- generalized. Where appropriate it re-exports the more general
-- functions from lifted-base (e.g. catch) rather than the versions
-- re-implemented for Process.
@package distributed-process-lifted
@version 0.2.0.1
module Control.Distributed.Process.Node.Lifted
-- | Generalized version of putMVar.
closeLocalNode :: MonadBase IO m => LocalNode -> m ()
-- | Generalized version of forkProcess.
forkProcess :: MonadBase IO m => LocalNode -> Process () -> m ProcessId
-- | Generalized version of newLocalNode.
newLocalNode :: MonadBase IO m => Transport -> RemoteTable -> m LocalNode
-- | Generalized version of runProcess
runProcess :: MonadBase IO m => LocalNode -> Process () -> m ()
-- | Local nodes
data LocalNode :: *
initRemoteTable :: RemoteTable
-- | NodeId of the node
localNodeId :: LocalNode -> NodeId
module Control.Distributed.Process.Lifted.Class
-- | A class into instances of which Process operations can be lifted;
-- similar to MonadIO or MonadBase.
class (Monad m, MonadIO m, MonadBase IO m, MonadBaseControl IO m) => MonadProcess m
-- | lift a base Process computation into the current monad
liftP :: MonadProcess m => Process a -> m a
-- | A Clone of MonadBaseControl specialized to the Process monad.
-- This uses the MonadTransControl typeclass for transformer
-- default instances, so the core wrapping/unwrapping logic is not
-- duplicated. This class is needed because the MonadBaseControl instance
-- for Process has IO as the base.
class (MonadProcess m) => MonadProcessBase m where type family StMP m a :: *
liftBaseWithP :: MonadProcessBase m => (RunInBaseP m -> Process a) -> m a
restoreMP :: MonadProcessBase m => StMP m a -> m a
-- | A clone of RunInBase for MonadProcessBase.
type RunInBaseP m = forall a. m a -> Process (StMP m a)
-- | A clone of ComposeSt for MonadProcessBase.
type ComposeStP t m a = StMP m (StT t a)
-- | A clone of RunInBaseDefault for MonadProcessBase.
type RunInBaseDefaultP t m = forall a. t m a -> Process (ComposeStP t m a)
-- | A clone of defaultLiftBaseWith for MonadProcessBase. This
-- re-uses the MonadTransControl typeclass the same way as the original;
-- core wrapping/unwrapping logic for each transformer type is not
-- duplicated.
defaultLiftBaseWithP :: (MonadTransControl t, MonadProcessBase m) => (RunInBaseDefaultP t m -> Process a) -> t m a
-- | A clone of defaultRestoreMP for MonadProcessBase. This re-uses
-- the MonadTransControl typeclass the same way as the original; core
-- wrapping/unwrapping logic for each transformer type is not duplicated.
defaultRestoreMP :: (MonadTransControl t, MonadProcessBase m) => ComposeStP t m a -> t m a
-- | A clone of control for MonadProcessBase.
controlP :: MonadProcessBase m => (RunInBaseP m -> Process (StMP m a)) -> m a
-- | A clone of liftBaseDiscard for MonadProcessBase.
liftBaseDiscardP :: MonadProcessBase m => (Process () -> Process a) -> m () -> m a
instance Control.Distributed.Process.Lifted.Class.MonadProcess Control.Distributed.Process.Internal.Types.Process
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase Control.Distributed.Process.Internal.Types.Process
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.Identity.IdentityT m)
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.Maybe.MaybeT m)
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.List.ListT m)
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.Reader.ReaderT r m)
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.State.Strict.StateT s m)
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.State.Lazy.StateT s m)
instance Control.Distributed.Process.Lifted.Class.MonadProcess m => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.Except.ExceptT e m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcess m) => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.Writer.Strict.WriterT w m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcess m) => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.Writer.Lazy.WriterT w m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcess m) => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.RWS.Strict.RWST r w s m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcess m) => Control.Distributed.Process.Lifted.Class.MonadProcess (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.Identity.IdentityT m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.Maybe.MaybeT m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.List.ListT m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.Reader.ReaderT r m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.State.Strict.StateT s m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.State.Lazy.StateT s m)
instance Control.Distributed.Process.Lifted.Class.MonadProcessBase m => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.Except.ExceptT e m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcessBase m) => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.Writer.Strict.WriterT w m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcessBase m) => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.Writer.Lazy.WriterT w m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcessBase m) => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.RWS.Strict.RWST r w s m)
instance (GHC.Base.Monoid w, Control.Distributed.Process.Lifted.Class.MonadProcessBase m) => Control.Distributed.Process.Lifted.Class.MonadProcessBase (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
module Control.Distributed.Process.Lifted
(.:) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
-- | Generalized version of spawnLocal
spawnLocal :: (MonadProcessBase m) => m () -> m ProcessId
-- | Generalized version of getSelfPid
getSelfPid :: (MonadProcess m) => m ProcessId
-- | Generalized version of expect
expect :: (MonadProcess m) => forall a. Serializable a => m a
-- | Generalized version of expectTimeout
expectTimeout :: (MonadProcess m) => forall a. Serializable a => Int -> m (Maybe a)
-- | Generalized version of register
register :: (MonadProcess m) => String -> ProcessId -> m ()
-- | Generalized version of whereis
whereis :: (MonadProcess m) => String -> m (Maybe ProcessId)
-- | Generalized version of catchesExit
catchesExit :: (MonadProcessBase m) => m a -> [ProcessId -> Message -> m (Maybe a)] -> m a
-- | Generalized version of delegate
delegate :: MonadProcess m => ProcessId -> (Message -> Bool) -> m ()
-- | Generalized version of forward
forward :: MonadProcess m => Message -> ProcessId -> m ()
-- | Generalized version of getLocalNodeStats
getLocalNodeStats :: MonadProcess m => m NodeStats
-- | Generalized version of getNodeStats
getNodeStats :: MonadProcess m => NodeId -> m (Either DiedReason NodeStats)
-- | Generalized version of getProcessInfo
getProcessInfo :: MonadProcess m => ProcessId -> m (Maybe ProcessInfo)
-- | Generalized version of getSelfNode
getSelfNode :: MonadProcess m => m NodeId
-- | Generalized version of kill
kill :: MonadProcess m => ProcessId -> String -> m ()
-- | Generalized version of link
link :: MonadProcess m => ProcessId -> m ()
-- | Generalized version of linkNode
linkNode :: MonadProcess m => NodeId -> m ()
-- | Generalized version of linkPort
linkPort :: MonadProcess m => SendPort a -> m ()
-- | Generalized version of monitor
monitor :: MonadProcess m => ProcessId -> m MonitorRef
-- | Generalized version of monitorNode
monitorNode :: MonadProcess m => NodeId -> m MonitorRef
-- | Generalized version of receiveTimeout
receiveTimeout :: MonadProcess m => Int -> [Match b] -> m (Maybe b)
-- | Generalized version of receiveWait
receiveWait :: MonadProcess m => [Match b] -> m b
-- | Generalized version of reconnect
reconnect :: MonadProcess m => ProcessId -> m ()
-- | Generalized version of reconnectPort
reconnectPort :: MonadProcess m => SendPort a -> m ()
-- | Generalized version of registerRemoteAsync
registerRemoteAsync :: MonadProcess m => NodeId -> String -> ProcessId -> m ()
-- | Generalized version of relay
relay :: MonadProcess m => ProcessId -> m ()
-- | Generalized version of reregister
reregister :: MonadProcess m => String -> ProcessId -> m ()
-- | Generalized version of reregisterRemoteAsync
reregisterRemoteAsync :: MonadProcess m => NodeId -> String -> ProcessId -> m ()
-- | Generalized version of say
say :: MonadProcess m => String -> m ()
-- | Generalized version of spawn
spawn :: MonadProcess m => NodeId -> Closure (Process ()) -> m ProcessId
-- | Generalized version of spawnAsync
spawnAsync :: MonadProcess m => NodeId -> Closure (Process ()) -> m SpawnRef
-- | Generalized version of spawnLink
spawnLink :: MonadProcess m => NodeId -> Closure (Process ()) -> m ProcessId
-- | Generalized version of spawnMonitor
spawnMonitor :: MonadProcess m => NodeId -> Closure (Process ()) -> m (ProcessId, MonitorRef)
-- | Generalized version of spawnSupervised
spawnSupervised :: MonadProcess m => NodeId -> Closure (Process ()) -> m (ProcessId, MonitorRef)
-- | Generalized version of terminate
terminate :: MonadProcess m => m a
-- | Generalized version of unlink
unlink :: MonadProcess m => ProcessId -> m ()
-- | Generalized version of unlinkNode
unlinkNode :: MonadProcess m => NodeId -> m ()
-- | Generalized version of unlinkPort
unlinkPort :: MonadProcess m => SendPort a -> m ()
-- | Generalized version of unmonitor
unmonitor :: MonadProcess m => MonitorRef -> m ()
-- | Generalized version of unregister
unregister :: MonadProcess m => String -> m ()
-- | Generalized version of unregisterRemoteAsync
unregisterRemoteAsync :: MonadProcess m => NodeId -> String -> m ()
-- | Generalized version of whereisRemoteAsync
whereisRemoteAsync :: MonadProcess m => NodeId -> String -> m ()
-- | Generalized version of withMonitor
withMonitor :: MonadProcessBase m => ProcessId -> m a -> m a
-- | Generalized version of call
call :: (MonadProcess m, Serializable a) => Static (SerializableDict a) -> NodeId -> Closure (Process a) -> m a
-- | Generalized version of catchExit
catchExit :: (MonadProcessBase m, Show a, Serializable a) => m b -> (ProcessId -> a -> m b) -> m b
-- | Generalized version of die
die :: (MonadProcess m, Serializable a) => a -> m b
-- | Generalized version of exit
exit :: (MonadProcess m, Serializable a) => ProcessId -> a -> m ()
-- | Generalized version of handleMessage
handleMessage :: (MonadProcess m, Serializable a) => Message -> (a -> Process b) -> m (Maybe b)
-- | Generalized version of handleMessageIf
handleMessageIf :: (MonadProcess m, Serializable a) => Message -> (a -> Bool) -> (a -> Process b) -> m (Maybe b)
-- | Generalized version of handleMessageIf_
handleMessageIf_ :: (MonadProcess m, Serializable a) => Message -> (a -> Bool) -> (a -> Process ()) -> m ()
-- | Generalized version of handleMessage_
handleMessage_ :: (MonadProcess m, Serializable a) => Message -> (a -> Process ()) -> m ()
-- | Generalized version of mergePortsBiased
mergePortsBiased :: (MonadProcess m, Serializable a) => [ReceivePort a] -> m (ReceivePort a)
-- | Generalized version of mergePortsRR
mergePortsRR :: (MonadProcess m, Serializable a) => [ReceivePort a] -> m (ReceivePort a)
-- | Generalized version of monitorPort
monitorPort :: (MonadProcess m, Serializable a) => SendPort a -> m MonitorRef
-- | Generalized version of newChan
newChan :: (MonadProcess m, Serializable a) => m (SendPort a, ReceivePort a)
-- | Generalized version of nsend
nsend :: (MonadProcess m, Serializable a) => String -> a -> m ()
-- | Generalized version of nsendRemote
nsendRemote :: (MonadProcess m, Serializable a) => NodeId -> String -> a -> m ()
-- | Generalized version of proxy
proxy :: (MonadProcess m, Serializable a) => ProcessId -> (a -> Process Bool) -> m ()
-- | Generalized version of receiveChan
receiveChan :: (MonadProcess m, Serializable a) => ReceivePort a -> m a
-- | Generalized version of receiveChanTimeout
receiveChanTimeout :: (MonadProcess m, Serializable a) => Int -> ReceivePort a -> m (Maybe a)
-- | Generalized version of send
send :: (MonadProcess m, Serializable a) => ProcessId -> a -> m ()
-- | Generalized version of sendChan
sendChan :: (MonadProcess m, Serializable a) => SendPort a -> a -> m ()
-- | Generalized version of spawnChannel
spawnChannel :: (MonadProcess m, Serializable a) => Static (SerializableDict a) -> NodeId -> Closure (ReceivePort a -> Process ()) -> m (SendPort a)
-- | Generalized version of spawnChannelLocal
spawnChannelLocal :: (MonadProcess m, Serializable a) => (ReceivePort a -> Process ()) -> m (SendPort a)
-- | Generalized version of unClosure
unClosure :: (MonadProcess m, Typeable a) => Closure a -> m a
-- | Generalized version of unStatic
unStatic :: (MonadProcess m, Typeable a) => Static a -> m a
-- | Generalized version of unsafeNSend
unsafeNSend :: (MonadProcess m, Serializable a) => String -> a -> m ()
-- | Generalized version of unsafeSend
unsafeSend :: (MonadProcess m, Serializable a) => ProcessId -> a -> m ()
-- | Generalized version of unsafeSendChan
unsafeSendChan :: (MonadProcess m, Serializable a) => SendPort a -> a -> m ()
-- | Generalized version of unwrapMessage
unwrapMessage :: (MonadProcess m, Serializable a) => Message -> m (Maybe a)
-- | Utility functions for working with Processes outside of the
-- Process monad.
module Control.Distributed.Process.Lifted.Extras
-- | A variant of runProcess which returns a value. This works just
-- like runProcess by forking a new process with a captured
-- MVar, but it will return the result of the computation. If the
-- computation throws an exception, it will be re-thrown by
-- fromProcess in the calling thread.
fromProcess :: (MonadBase IO m) => LocalNode -> Process a -> m a
-- | Represents a handle to a process runner that communicates through a
-- Chan. Create with spawnProxy or spawnProxyIO. Use
-- this to call process actions (using fromProxy or
-- inProxy) from any IO that will be executed in a single process
-- that will have a persistent pid and mailbox across invocations.
-- Sharing a single proxy between threads may yield poor performance and
-- is not advised.
data ProcessProxy
proxyPid :: ProcessProxy -> ProcessId
-- | Spawn a new process and return a ProcessProxy handle for it.
spawnProxy :: Process ProcessProxy
-- | Same as spawnProxy but can be used from any IO
--
-- spawnProxyIO node = fromProcess node spawnProxy
spawnProxyIO :: (MonadBase IO m) => LocalNode -> m ProcessProxy
-- | Use a ProcessProxy created with spawnProxy to run a
-- Process computation in the existing Process asynchronously.
inProxy :: (MonadBase IO m) => ProcessProxy -> Process () -> m ()
-- | Use a ProcessProxy created with spawnProxy to run a
-- Process computation in the existing Process and return the result in
-- any IO.
fromProxy :: (MonadBase IO m) => ProcessProxy -> Process a -> m a
instance GHC.Show.Show Control.Distributed.Process.Lifted.Extras.ProcessProxy