mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-05 07:03:12 +00:00
impl has
This commit is contained in:
parent
2cded134dd
commit
9fa6c6e661
@ -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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user