setup query end

This commit is contained in:
Jaremy Creechley 2023-09-26 15:37:19 -07:00
parent b6baefc19c
commit eec66c9238
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300

View File

@ -104,12 +104,10 @@ template executeTask[T](ctx: TaskCtx[T], blk: untyped) =
ctx.setDone()
discard ctx[].signal.fireSync()
template dispatchTask[T](self: ThreadDatastore,
template dispatchTaskWrap[T](self: ThreadDatastore,
signal: ThreadSignalPtr,
blk: untyped
): auto =
var
ctx {.inject.} = newSharedPtr(TaskCtxObj[T](signal: signal))
try:
case self.backend.kind:
of Sqlite:
@ -127,6 +125,13 @@ template dispatchTask[T](self: ThreadDatastore,
discard ctx[].signal.close()
self.semaphore.release()
template dispatchTask[T](self: ThreadDatastore,
signal: ThreadSignalPtr,
blk: untyped
): auto =
let ctx {.inject.} = newSharedPtr(TaskCtxObj[T](signal: signal))
dispatchTaskWrap[T](self, signal, blk)
proc hasTask[T, DB](ctx: TaskCtx[T], ds: DB, key: KeyId) {.gcsafe.} =
## run backend command
executeTask(ctx):
@ -284,6 +289,8 @@ method query*(
await lock.acquire()
dispatchTask[DbQueryResponse[KeyId, DataBuffer]](self, signal):
self.tp.spawn queryTask(ctx, ds, dq)
discard ctx[].signal.fireSync()
await ctx[].signal.wait()