From 9956b3d3a8b639b01037af28b1db739002c6c47d Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Thu, 8 Feb 2024 11:59:08 -0700 Subject: [PATCH] asyncTaskMacro --- src/apatheia/macroutils.nim | 5 +++++ src/apatheia/tasks.nim | 13 ++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/apatheia/macroutils.nim b/src/apatheia/macroutils.nim index 42ae072..25af953 100644 --- a/src/apatheia/macroutils.nim +++ b/src/apatheia/macroutils.nim @@ -10,6 +10,11 @@ proc hasReturnType*(params: NimNode): bool = params[0].kind != nnkEmpty: result = true +proc getReturnType*(params: NimNode): NimNode = + if params != nil and params.len > 0 and params[0] != nil and + params[0].kind != nnkEmpty: + result = params[0] + proc firstArgument*(params: NimNode): (NimNode, NimNode) = if params != nil and params.len > 0 and diff --git a/src/apatheia/tasks.nim b/src/apatheia/tasks.nim index be9b318..a2c5516 100644 --- a/src/apatheia/tasks.nim +++ b/src/apatheia/tasks.nim @@ -14,8 +14,11 @@ macro asyncTask*(p: untyped): untyped = body = p[6] name = repr(procId).strip(false, true, {'*'}) - echo "ASYNC_TASK: name: ", name - echo "ASYNC_TASK: params: \n", params.treeRepr + echo "\nASYNC_TASK: " + echo "name: ", name + echo "hasReturnType: ", hasReturnType(params) + echo "getReturnType: ", params.getReturnType().treeRepr + echo "params: \n", params.treeRepr let tcall = mkCall(ident"test", params) echo "ASYNC_TASK: call: \n", tcall.treeRepr @@ -25,9 +28,13 @@ type proc doHashes*(data: openArray[byte], opts: HashOptions) {.asyncTask.} = - echo "args: ", args.len() +proc doHashesRes*(data: openArray[byte], + opts: HashOptions): int {.asyncTask.} = + echo "args: ", args.len() + result = 10 + when false: