module Control.Distributed.Task.TaskSpawning.DeploySerializedThunk (deployAndRunSerializedThunk, serializedThunkExecution, acceptAndExecuteSerializedThunk) where
import qualified Data.ByteString.Lazy as BL
import System.FilePath ()
import Control.Distributed.Task.TaskSpawning.DeployFullBinary (ExternalExecutionResult, deployAndRunExternalBinary, fullBinaryExecution)
import Control.Distributed.Task.TaskSpawning.FunctionSerialization (deserializeFunction)
import Control.Distributed.Task.TaskSpawning.TaskSpawningTypes
import Control.Distributed.Task.Types.TaskTypes
deployAndRunSerializedThunk :: String -> BL.ByteString -> IOHandling -> BL.ByteString -> IO ExternalExecutionResult
deployAndRunSerializedThunk mainArg taskFunction = deployAndRunExternalBinary [mainArg, show taskFunction]
acceptAndExecuteSerializedThunk :: BL.ByteString -> IO (TaskInput -> TaskResult)
acceptAndExecuteSerializedThunk taskFn = (deserializeFunction taskFn :: IO (TaskInput -> TaskResult)) >>= (\f -> return (take 10 . f))
serializedThunkExecution :: IOHandling -> (TaskInput -> TaskResult) -> IO ()
serializedThunkExecution = fullBinaryExecution