mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-06 15:43:10 +00:00
plumbing values
This commit is contained in:
parent
055edb4a41
commit
5ef4196e51
@ -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":
|
||||
|
||||
@ -7,7 +7,6 @@ import std/atomics
|
||||
|
||||
import events
|
||||
|
||||
|
||||
type
|
||||
DataBuffer* = object
|
||||
cnt: ptr int
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user