module Simulation.Aivika.Distributed.Optimistic.DIO
(DIO,
DIOParams(..),
DIOStrategy(..),
runDIO,
defaultDIOParams,
dioParams,
messageInboxId,
timeServerId,
logDIO,
terminateDIO,
registerDIO,
unregisterDIO,
monitorProcessDIO,
InboxProcessMessage(MonitorProcessMessage),
processMonitorSignal) where
import Control.Monad
import Control.Monad.Trans
import Simulation.Aivika.Trans.Comp
import Simulation.Aivika.Trans.DES
import Simulation.Aivika.Trans.Exception
import Simulation.Aivika.Trans.Generator
import Simulation.Aivika.Trans.Event
import Simulation.Aivika.Trans.Composite
import Simulation.Aivika.Trans.Process
import Simulation.Aivika.Trans.Ref.Base
import Simulation.Aivika.Trans.QueueStrategy
import Simulation.Aivika.Trans.Internal.Types
import Simulation.Aivika.Distributed.Optimistic.Internal.Message
import Simulation.Aivika.Distributed.Optimistic.Internal.DIO
import Simulation.Aivika.Distributed.Optimistic.Internal.Event
import Simulation.Aivika.Distributed.Optimistic.Internal.InputMessageQueue
import Simulation.Aivika.Distributed.Optimistic.Internal.OutputMessageQueue
import Simulation.Aivika.Distributed.Optimistic.Generator
import Simulation.Aivika.Distributed.Optimistic.Ref.Base.Lazy
import Simulation.Aivika.Distributed.Optimistic.Ref.Base.Strict
import Simulation.Aivika.Distributed.Optimistic.QueueStrategy
instance MonadDES DIO
instance MonadComp DIO
instance MonadIO (Process DIO) where
liftIO = liftEvent . liftIO
instance MonadIO (Composite DIO) where
liftIO = liftEvent . liftIO