distributed-fork-0.0.1.0: src/Control/Distributed/Fork/LocalProcessBackend.hs
module Control.Distributed.Fork.LocalProcessBackend where
--------------------------------------------------------------------------------
import qualified Data.ByteString.Lazy as BL
import System.Process.Typed
--------------------------------------------------------------------------------
import Control.Distributed.Fork.Backend
--------------------------------------------------------------------------------
-- |
-- A 'Backend' which uses local processes as executors. Useful for testing.
localProcessBackend :: Backend
localProcessBackend = Backend $ \stdin' -> do
executable <- liftIO getExecutablePath
let conf =
setStdin (byteStringInput $ BL.fromStrict stdin') $
proc executable [argExecutorMode]
liftIO . fmap BL.toStrict $ readProcessStdout_ conf