impl delete

This commit is contained in:
Jaremy Creechley 2023-08-29 12:55:38 -07:00
parent 0f32ea2344
commit eb435971f0
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
2 changed files with 41 additions and 2 deletions

View File

@ -81,7 +81,6 @@ proc get*(
let bkey = StringBuffer.new(key.id())
tds[].tp.spawn getTask(ret, tds, bkey)
import os
proc putTask*(
ret: TResult[void],
@ -118,3 +117,30 @@ proc put*(
print "bval: ", bval
tds[].tp.spawn putTask(ret, tds, bkey, bval)
proc deleteTask*(
ret: TResult[void],
tds: ThreadDatastorePtr,
kb: KeyBuffer,
) =
without key =? kb.toKey(), err:
ret[].state = Error
let res = (waitFor tds[].ds.delete(key)).catch
# print "thrbackend: putTask: fire", ret[].signal.fireSync().get()
if res.isErr:
ret[].state = Error
ret[].error = res.error().toBuffer()
else:
ret[].state = Success
discard ret[].signal.fireSync()
proc delete*(
ret: TResult[void],
tds: ThreadDatastorePtr,
key: Key,
) =
let bkey = StringBuffer.new(key.id())
tds[].tp.spawn deleteTask(ret, tds, bkey)

View File

@ -23,7 +23,6 @@ push: {.upraises: [].}
type
ThreadProxyDatastore* = ref object of Datastore
# stores*: Table[Key, ThreadProxyDatastore]
tds: ThreadDatastorePtr
method has*(
@ -36,8 +35,22 @@ method delete*(
self: ThreadProxyDatastore,
key: Key
): Future[?!void] {.async.} =
without ret =? newThreadResult(void), err:
return failure(err)
echo "res: ", ret
try:
delete(ret, self.tds, key)
await wait(ret[].signal)
finally:
echo "closing signal"
ret[].signal.close()
echo "\nSharedDataStore:put:value: ", ret[].repr
return success()
method delete*(
self: ThreadProxyDatastore,
keys: seq[Key]