implementing query type

This commit is contained in:
Jaremy Creechley 2023-08-29 15:59:49 -07:00
parent 0a98da3563
commit f478b91c56
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
2 changed files with 14 additions and 5 deletions

View File

@ -193,5 +193,14 @@ proc queryTask*(
let qrb = res.toBuffer()
ret.success(qrb)
except Exception:
echo "failure"
except Exception as exc:
ret.failure(exc)
discard ret[].signal.fireSync()
proc query*(
ret: TResult[QueryResponseBuffer],
tds: ThreadDatastorePtr,
qiter: QueryIterPtr,
) =
tds[].tp.spawn queryTask(ret, tds, qiter)

View File

@ -139,10 +139,10 @@ method query*(
iter[].it = it
while not iter[].it.finished:
self.tds[].tp.spawn queryTask(ret, self.tds, iter)
query(ret, self.tds, iter)
await wait(ret[].signal)
# iter[].it = nil # ensure our sharedptr doesn't try and dealloc
iter[].it = nil # ensure our sharedptr doesn't try and dealloc
finally:
ret[].signal.close()
@ -162,7 +162,7 @@ method close*(
## this can block... how to handle? maybe just leak?
self.tds[].tp.shutdown()
# self[].tds[].ds = nil # ensure our sharedptr doesn't try and dealloc
self[].tds[].ds = nil # ensure our sharedptr doesn't try and dealloc
proc newThreadProxyDatastore*(
ds: Datastore,