plumbing values

This commit is contained in:
Jaremy Creechley 2023-08-24 17:59:43 -07:00 committed by Dmitriy Ryajov
parent 055edb4a41
commit 5ef4196e51
No known key found for this signature in database
GPG Key ID: DA8C680CE7C657A4
4 changed files with 18 additions and 14 deletions

View File

@ -14,6 +14,7 @@ requires "nim >= 1.2.0",
"stew",
"unittest2",
"patty",
"threading",
"upraises >= 0.1.0 & < 0.2.0"
task coverage, "generates code coverage report":

View File

@ -7,7 +7,6 @@ import std/atomics
import events
type
DataBuffer* = object
cnt: ptr int

View File

@ -67,12 +67,11 @@ method put*(
data: seq[byte]
): Future[?!void] {.async.} =
let signal = ThreadSignalPtr.new()
if signal.isErr:
return failure("error creating signal")
else:
await wait(signal.get())
return success()
let signal = ThreadSignalPtr.new().valueOr:
return failure newException(DatastoreError, "error creating signal")
await wait(signal)
return success()
method put*(
self: SharedDatastore,
@ -84,9 +83,6 @@ method close*(
self: SharedDatastore
): Future[?!void] {.async.} =
# for s in self.stores.values:
# discard await s.store.close()
# TODO: how to handle failed close?
return success()

View File

@ -8,6 +8,7 @@ import ./key
import ./query
import ./datastore
import ./databuffer
import threading/smartptrs
import fsds
@ -16,6 +17,11 @@ export key, query
push: {.upraises: [].}
type
ThreadResult*[T: DataBuffer | void] = Result[T, CatchableErrorBuffer]
TResult*[T] = UniquePtr[ThreadResult[T]]
ThreadBackendKind* {.pure.} = enum
FSBackend
SQliteBackend
@ -35,6 +41,9 @@ type
var backendDatastore {.threadvar.}: Datastore
proc new*[T](tp: typedesc[TResult[T]]): TResult[T] =
newUniquePtr(ThreadResult[T])
proc startupDatastore(backend: ThreadBackend): bool =
## starts up a FS instance on a give thread
case backend.kind:
@ -61,11 +70,10 @@ proc put*(
self: ThreadDatastore,
signal: ThreadSignalPtr,
key: KeyBuffer,
data: DataBuffer
): Result[void, CatchableErrorBuffer] =
return ok()
data: DataBuffer,
): TResult[void] =
return TResult[void].new()
proc close*(
self: ThreadDatastore,