This commit is contained in:
Jaremy Creechley 2023-08-29 12:57:31 -07:00 committed by Dmitriy Ryajov
parent 2cded134dd
commit 9fa6c6e661
No known key found for this signature in database
GPG Key ID: DA8C680CE7C657A4

View File

@ -50,6 +50,34 @@ proc newThreadResult*[T](
res[].signal = signal.get()
ok res
proc hasTask*(
ret: TResult[bool],
tds: ThreadDatastorePtr,
kb: KeyBuffer,
) =
without key =? kb.toKey(), err:
ret[].state = Error
try:
let res = waitFor tds[].ds.has(key)
if res.isErr:
ret[].state = Error
ret[].error = res.error().toBuffer()
else:
ret[].state = Success
ret[].value = res.get()
discard ret[].signal.fireSync()
except CatchableError as err:
ret[].state = Error
ret[].error = err.toBuffer()
proc has*(
ret: TResult[bool],
tds: ThreadDatastorePtr,
key: Key,
) =
let bkey = StringBuffer.new(key.id())
tds[].tp.spawn hasTask(ret, tds, bkey)
proc getTask*(
ret: TResult[DataBuffer],
tds: ThreadDatastorePtr,
@ -72,7 +100,6 @@ proc getTask*(
ret[].state = Error
ret[].error = err.toBuffer()
proc get*(
ret: TResult[DataBuffer],
tds: ThreadDatastorePtr,
@ -103,7 +130,6 @@ proc putTask*(
discard ret[].signal.fireSync()
proc put*(
ret: TResult[void],
tds: ThreadDatastorePtr,
@ -118,6 +144,7 @@ proc put*(
tds[].tp.spawn putTask(ret, tds, bkey, bval)
proc deleteTask*(
ret: TResult[void],
tds: ThreadDatastorePtr,