ron-0.8: RON

Safe HaskellNone
LanguageHaskell2010

RON.Event.Simulation

Description

Lamport clock network simulation. ReplicaSimT provides Replica and Clock instances, replicas may interchange data while they are connected in a NetworkSimT.

Synopsis

Documentation

data NetworkSimT m a Source #

Lamport clock simulation. Key is ReplicaId. Non-present value is equivalent to (0, initial).

Instances
MonadTrans NetworkSimT Source # 
Instance details

Defined in RON.Event.Simulation

Methods

lift :: Monad m => m a -> NetworkSimT m a #

MonadError e m => MonadError e (NetworkSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

throwError :: e -> NetworkSimT m a #

catchError :: NetworkSimT m a -> (e -> NetworkSimT m a) -> NetworkSimT m a #

Monad m => Monad (NetworkSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

(>>=) :: NetworkSimT m a -> (a -> NetworkSimT m b) -> NetworkSimT m b #

(>>) :: NetworkSimT m a -> NetworkSimT m b -> NetworkSimT m b #

return :: a -> NetworkSimT m a #

fail :: String -> NetworkSimT m a #

Functor m => Functor (NetworkSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

fmap :: (a -> b) -> NetworkSimT m a -> NetworkSimT m b #

(<$) :: a -> NetworkSimT m b -> NetworkSimT m a #

Monad m => Applicative (NetworkSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

pure :: a -> NetworkSimT m a #

(<*>) :: NetworkSimT m (a -> b) -> NetworkSimT m a -> NetworkSimT m b #

liftA2 :: (a -> b -> c) -> NetworkSimT m a -> NetworkSimT m b -> NetworkSimT m c #

(*>) :: NetworkSimT m a -> NetworkSimT m b -> NetworkSimT m b #

(<*) :: NetworkSimT m a -> NetworkSimT m b -> NetworkSimT m a #

data ReplicaSimT m a Source #

ReplicaSim inside Lamport clock simulation.

Instances
MonadTrans ReplicaSimT Source # 
Instance details

Defined in RON.Event.Simulation

Methods

lift :: Monad m => m a -> ReplicaSimT m a #

MonadError e m => MonadError e (ReplicaSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

throwError :: e -> ReplicaSimT m a #

catchError :: ReplicaSimT m a -> (e -> ReplicaSimT m a) -> ReplicaSimT m a #

Monad m => Monad (ReplicaSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

(>>=) :: ReplicaSimT m a -> (a -> ReplicaSimT m b) -> ReplicaSimT m b #

(>>) :: ReplicaSimT m a -> ReplicaSimT m b -> ReplicaSimT m b #

return :: a -> ReplicaSimT m a #

fail :: String -> ReplicaSimT m a #

Functor m => Functor (ReplicaSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

fmap :: (a -> b) -> ReplicaSimT m a -> ReplicaSimT m b #

(<$) :: a -> ReplicaSimT m b -> ReplicaSimT m a #

MonadFail m => MonadFail (ReplicaSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

fail :: String -> ReplicaSimT m a #

Monad m => Applicative (ReplicaSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

Methods

pure :: a -> ReplicaSimT m a #

(<*>) :: ReplicaSimT m (a -> b) -> ReplicaSimT m a -> ReplicaSimT m b #

liftA2 :: (a -> b -> c) -> ReplicaSimT m a -> ReplicaSimT m b -> ReplicaSimT m c #

(*>) :: ReplicaSimT m a -> ReplicaSimT m b -> ReplicaSimT m b #

(<*) :: ReplicaSimT m a -> ReplicaSimT m b -> ReplicaSimT m a #

Monad m => ReplicaClock (ReplicaSimT m) Source # 
Instance details

Defined in RON.Event.Simulation

runNetworkSim :: NetworkSim a -> a Source #

Execute network simulation

Usage:

runNetworkSim $ do
    runReplicaSim r1 $ do
        actions...
    runReplicaSim r2 $ do
        actions...
    runReplicaSim r1 $ ...

Each runNetworkSim starts its own networks. One shouldn't use in one network events generated in another.