module Network.JobQueue.Job (
Job(jobState, jobUnit, jobCTime, jobOnTime, jobId, jobGroup, jobPriority, StopTheWorld)
, JobState(..)
, buildActionState
, process
, createJob
, createOnTimeJob
, printJob
, module Network.JobQueue.Types
, module Network.JobQueue.Action
) where
import Control.Monad.State hiding (state)
import Network.JobQueue.Class
import Network.JobQueue.AuxClass
import Network.JobQueue.Types
import Network.JobQueue.Action
import Network.JobQueue.Job.Internal
buildActionState :: (Env e, Unit a) => JobM e a () -> IO (JobActionState e a)
buildActionState jobs = execStateT (runS jobs) (JobActionState [])
process :: (Aux e, Env e, Unit a) => (a -> ActionM e a ()) -> JobM e a ()
process action = modify $ addAction $ eval action
eval :: (Aux e, Env e, Unit a) => (a -> ActionM e a ()) -> ActionFn e a
eval action env ju = runAction env ju (action ju)