summaryrefslogtreecommitdiff
path: root/src/Job.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Job.hs')
-rw-r--r--src/Job.hs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Job.hs b/src/Job.hs
index 20e6fd5..aadea66 100644
--- a/src/Job.hs
+++ b/src/Job.hs
@@ -7,6 +7,7 @@ module Job (
JobStatus(..),
jobStatusFinished, jobStatusFailed,
JobManager(..), newJobManager, cancelAllJobs,
+ Task(..), TaskId,
runJobs, waitForRemainingTasks,
prepareJob,
@@ -145,6 +146,12 @@ data JobManager = JobManager
, jmOpenStatusUpdates :: TVar Int
}
+data Task = Task
+ { taskId :: TaskId
+ , taskJob :: Job
+ , taskStatus :: TVar (JobStatus JobOutput)
+ }
+
newtype TaskId = TaskId Int
deriving (Eq, Ord)
@@ -223,7 +230,7 @@ runManagedJob JobManager {..} tid cancel job = bracket acquire release $ \case
runJobs :: JobManager -> Output -> [ Job ]
-> (JobId -> JobStatus JobOutput -> Bool) -- ^ Rerun condition
- -> IO [ ( Job, TVar (JobStatus JobOutput) ) ]
+ -> IO [ Task ]
runJobs mngr@JobManager {..} tout jobs rerun = do
results <- atomically $ do
forM jobs $ \job -> do
@@ -292,7 +299,7 @@ runJobs mngr@JobManager {..} tout jobs rerun = do
atomically $ writeTVar outVar $ either id id res
outputJobFinishedEvent tout job $ either id id res
- return $ map (\( job, _, var ) -> ( job, var )) results
+ return $ map (\( job, tid, var ) -> Task tid job var ) results
waitForRemainingTasks :: JobManager -> IO ()
waitForRemainingTasks JobManager {..} = do