module Holumbus.Distribution.Worker.WorkerPort
(
WorkerPort(..)
, newWorkerPort
)
where
import Holumbus.Common.Debug
import Holumbus.Network.Communication
import Holumbus.Distribution.Messages
import Holumbus.Distribution.Worker
data WorkerPort = WorkerPort ClientPort
deriving (Show)
newWorkerPort :: ClientPort -> WorkerPort
newWorkerPort p = WorkerPort p
instance WorkerClass WorkerPort where
closeWorker _ = return ()
startTask td w@(WorkerPort p)
= do
sendRequestToClient p time30 (WReqStartTask td) $
\rsp ->
do
case rsp of
(WRspSuccess) -> return (Just w)
_ -> return Nothing
stopTask tid w@(WorkerPort p)
= do
sendRequestToClient p time30 (WReqStopTask tid) $
\rsp ->
do
case rsp of
(WRspSuccess) -> return (Just w)
_ -> return Nothing
stopAllTasks w@(WorkerPort p)
= do
sendRequestToClient p time30 (WReqStopAllTasks) $
\rsp ->
do
case rsp of
(WRspSuccess) -> return (Just w)
_ -> return Nothing
getActionNames (WorkerPort p)
= do
sendRequestToClient p time30 (WReqGetActionNames) $
\rsp ->
do
case rsp of
(WRspGetActionNames as) -> return (Just as)
_ -> return Nothing
instance Debug WorkerPort where
printDebug (WorkerPort p)
= do
putStrLn "WorkerPort:"
putStrLn $ show p
getDebug (WorkerPort p)
= return ("WorkerPort:\n"++show p++"\n")