{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, OverlappingInstances #-} --overlapping due to serialization module Control.Distributed.Task.Distribution.TaskTransport where import Control.Distributed.Process (ProcessId, NodeId) import Control.Distributed.Process.Serializable (Serializable) import Data.Binary (Binary) import Data.ByteString.Lazy (ByteString) import Data.Typeable (Typeable) import GHC.Generics (Generic) import Control.Distributed.Task.TaskSpawning.TaskDefinition import Control.Distributed.Task.Types.TaskTypes --- task execution data TaskTransport = TaskTransport { _masterProcess :: ProcessId, _taskMetaData :: TaskMetaData, _taskDef :: TaskDef, _dataDefs :: [DataDef], _resultDef :: ResultDef } deriving (Typeable, Generic) instance Binary TaskTransport instance Serializable TaskTransport type TimeStamp = (Integer, Rational) data TaskMetaData = TaskMetaData { _taskName :: String, _slaveNodeId :: NodeId, _taskDistributionStartTime :: TimeStamp } deriving (Typeable, Generic) instance Binary TaskMetaData instance Serializable TaskMetaData data TransportedResult = TransportedResult { _transportedResultMetaData :: TaskMetaData, _transportedTotalRemoteRuntime :: Rational, _transportedTotalTasksRuntime :: Rational, _transportedResults :: Either String [TaskResult] } deriving (Typeable, Generic) instance Binary TransportedResult instance Serializable TransportedResult --- task preparation type QuerySlavePreparationRequest = (ProcessId, Int) data QuerySlavePreparationResponse = Prepared | Unprepared deriving (Typeable, Generic) instance Binary QuerySlavePreparationResponse instance Serializable QuerySlavePreparationResponse type PrepareSlaveRequest = (ProcessId, Int, ByteString) data PrepareSlaveResponse = PreparationFinished deriving (Typeable, Generic) instance Binary PrepareSlaveResponse instance Serializable PrepareSlaveResponse