prefork-0.0.9: src/System/Prefork/Main.hs
-- Copyright: (c) 2013 GREE, Inc.
-- License: MIT-style
module System.Prefork.Main (
defaultMain
, runSettings
) where
import System.Environment (lookupEnv)
import System.Posix.Env (setEnv)
import System.Prefork.Class
import System.Prefork.Types
import System.Prefork.Worker
import System.Prefork.Main.Internal
defaultMain :: (WorkerContext w) => PreforkSettings sc -> (w -> IO ()) -> IO ()
defaultMain = runSettings
runSettings :: (WorkerContext w) => PreforkSettings sc -> (w -> IO ()) -> IO ()
runSettings settings workerAction = do
mPrefork <- lookupEnv preforkEnvKey
case mPrefork of
Just "parent" -> do
setEnv preforkEnvKey "server" True
masterMain settings
Just _ -> workerMain workerAction
Nothing -> do
setEnv preforkEnvKey "parent" True
rootMain settings