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
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
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