diff --git a/src/apatheia/jobs.nim b/src/apatheia/jobs.nim index df83117..286ee60 100644 --- a/src/apatheia/jobs.nim +++ b/src/apatheia/jobs.nim @@ -70,3 +70,8 @@ macro submitMacro*(tp: untyped, jobs: untyped, exp: untyped): untyped = template submit*[T](jobs: JobQueue[T], exp: untyped): Future[T] = submitMacro(T, jobs, exp) +template jobWrapper*(task: untyped) = + template `task Wrapper`*(jobResult: JobResult[float], args: varargs[untyped]) = + let res = unpackVarargs(`task`(args)) + discard jobResult.queue.send((jobResult.id, res,)) + diff --git a/tests/tjobs.nim b/tests/tjobs.nim index 8888d8e..067581c 100644 --- a/tests/tjobs.nim +++ b/tests/tjobs.nim @@ -20,6 +20,8 @@ proc addNums(jobResult: JobResult[float], a, b: float) = let res = addNumsRaw(a, b) discard jobResult.queue.send((jobResult.id, res,)) +jobWrapper(addNumsRaw) + suite "async tests": # var tp = Taskpool.new(num_threads = 2) # Default to the number of hardware threads.