{-# LANGUAGE DeriveGeneric, DeriveDataTypeable #-} -- | -- Module : Simulation.Aivika.Distributed.Optimistic.State -- Copyright : Copyright (c) 2015-2017, David Sorokin -- License : BSD3 -- Maintainer : David Sorokin -- Stability : experimental -- Tested with: GHC 7.10.3 -- -- This module defines the monitoring states. -- module Simulation.Aivika.Distributed.Optimistic.State (LogicalProcessState(..), TimeServerState(..)) where import GHC.Generics import Data.Typeable import Data.Binary import qualified Control.Distributed.Process as DP import Control.Distributed.Process.Serializable -- | Represents the state of the logical process. data LogicalProcessState = LogicalProcessState { lpStateId :: DP.ProcessId, -- ^ the process identifier lpStateName :: String, -- ^ the process name lpStateStartTime :: Double, -- ^ the start time lpStateStopTime :: Double, -- ^ the stop time lpStateLocalTime :: Double, -- ^ the local time of the process lpStateEventQueueTime :: Double, -- ^ the event queue time of the process lpStateEventQueueSize :: Int, -- ^ the event queue size lpStateLogSize :: Int, -- ^ the log size of the process lpStateInputMessageCount :: Int, -- ^ the count of the input messages lpStateOutputMessageCount :: Int, -- ^ the count of the output messages lpStateTransientMessageCount :: Int, -- ^ the count of the transient messages that did not receive an acknowledgement lpStateRollbackCount :: Int -- ^ the count of rollbacks } deriving (Eq, Show, Typeable, Generic) instance Binary LogicalProcessState -- | Represents the state of the time server. data TimeServerState = TimeServerState { tsStateId :: DP.ProcessId, -- ^ the process identifier tsStateName :: String, -- ^ the time server name tsStateGlobalVirtualTime :: Maybe Double, -- ^ the global virtual time tsStateLogicalProcesses :: [DP.ProcessId] -- ^ the registered logical process identifiers } deriving (Eq, Show, Typeable, Generic) instance Binary TimeServerState