switching up errors

This commit is contained in:
Jaremy Creechley 2023-08-25 14:46:29 -07:00 committed by Dmitriy Ryajov
parent 86a7085539
commit aa01665c16
No known key found for this signature in database
GPG Key ID: DA8C680CE7C657A4
2 changed files with 22 additions and 15 deletions

View File

@ -49,15 +49,15 @@ method get*(
key: Key
): Future[?!seq[byte]] {.async.} =
var res = ?newThreadResult(DataBuffer)
echo "res: ", res
without ret =? newThreadResult(DataBuffer), err:
return failure(err)
get(res, self.tds, key)
await wait(res[].signal)
res[].signal.close()
get(ret, self.tds, key)
await wait(ret[].signal)
ret[].signal.close()
echo "\nSharedDataStore:put:value: ", res[].repr
let data = res[].value.toSeq(byte)
echo "\nSharedDataStore:put:value: ", ret[].repr
let data = ret[].value.toSeq(byte)
return success(data)
method put*(
@ -66,15 +66,16 @@ method put*(
data: seq[byte]
): Future[?!void] {.async.} =
var res = ?newThreadResult(void)
without ret =? newThreadResult(void), err:
return failure(err)
echo "res: ", res
put(res, self.tds, key, data)
await wait(res[].signal)
echo "res: ", ret
put(ret, self.tds, key, data)
await wait(ret[].signal)
echo "closing signal"
res[].signal.close()
ret[].signal.close()
echo "\nSharedDataStore:put:value: ", res[].repr
echo "\nSharedDataStore:put:value: ", ret[].repr
return success()
@ -98,7 +99,9 @@ proc newSharedDataStore*(
var
self = SharedDatastore()
res = ?newThreadResult(ThreadDatastorePtr)
without res =? newThreadResult(ThreadDatastorePtr), err:
return failure(err)
res[].value = newSharedPtr(ThreadDatastore)
res[].signal = ThreadSignalPtr.new().valueOr:

View File

@ -68,6 +68,10 @@ var
fsDatastore {.threadvar.}: FSDatastore ##\
## TODO: figure out a better way to capture this?
# proc `=destroy`*[T](x: var ThreadResult[T]) =
# when T isnot void:
# x.value.`=destroy`
proc newThreadResult*[T](tp: typedesc[T]): Result[TResult[T], ref CatchableError] =
let res = newSharedPtr(ThreadResult[T])
let signal = ThreadSignalPtr.new()
@ -170,7 +174,7 @@ proc put*(
tds[].tp.spawn putTask(ret, tds[].backend, bkey, bval)
proc createThreadDatastore*(
ret: var TResult[ThreadDatastorePtr],
ret: TResult[ThreadDatastorePtr],
backend: ThreadBackend,
) =