rough sketch

This commit is contained in:
Jaremy Creechley 2024-02-08 11:29:23 -07:00
parent ba54ab5f8b
commit 586582a7c7
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
2 changed files with 36 additions and 20 deletions

View File

@ -20,6 +20,7 @@ proc firstArgument*(params: NimNode): (NimNode, NimNode) =
result = (ident "", newNimNode(nnkEmpty))
iterator paramsIter*(params: NimNode): tuple[name, ntype: NimNode] =
## iterators through the parameters
for i in 1 ..< params.len:
let arg = params[i]
let argType = arg[^2]

View File

@ -1,27 +1,42 @@
import std/[macros, strutils]
macro asyncTask*(p: untyped): untyped =
let
procId = p[0]
procLineInfo = p.lineInfoObj
genericParams = p[2]
params = p[3]
pragmas = p[4]
body = p[6]
name = repr(procId).strip(false, true, {'*'})
echo "ASYNC_TASK: name: ", name
echo "ASYNC_TASK: params: \n", params.treeRepr
proc doHashes*(args: openArray[byte]) {.asyncTask.} =
echo "args: ", args.len()
proc doHashes*[T: object](args: openArray[T], obj: Object) {.asyncTask.} =
when false:
proc doHashesTask*(args: seq[Data]) =
discard
let x = args
proc doHashes*(args: seq[Data]) {.async.} =
# setup signals ... etc
# memory stuffs
# create future
let argsPtr = addr args[0]
let argsLen = args.len()
GC_ref(args)
proc doHashesTask*(args: seq[Data]) =
...
proc doHashes*(args: seq[Data]) {.async.} =
# setup signals ... etc
# memory stuffs
# create future
let argsPtr = addr args[0]
let argsLen = args.len()
GC_ref(args)
doHashes(toOpenArray(argsPtr, argsLen))
GC_unref(args)
doHashes(toOpenArray(argsPtr, argsLen))
GC_unref(args)
proc processHashes*(args: seq[Data]) {.async.} =
## do some processing on another thread
let res = await doHashes(args)
proc processHashes*(args: seq[Data]) {.async.} =
## do some processing on another thread
let res = await doHashes(args)