diff --git a/datastore/sharedds.nim b/datastore/sharedds.nim index 573e7e3..1bc22e0 100644 --- a/datastore/sharedds.nim +++ b/datastore/sharedds.nim @@ -22,10 +22,6 @@ type # stores*: Table[Key, SharedDatastore] tds: ThreadDatastorePtr -template newSignal(): auto = - ThreadSignalPtr.new().valueOr: - return failure newException(DatastoreError, "error creating signal") - method has*( self: SharedDatastore, key: Key @@ -78,13 +74,14 @@ method close*( proc newSharedDataStore*( # T: typedesc[SharedDatastore], backend: ThreadBackend, -): ?!SharedDatastore = +): Future[?!SharedDatastore] {.async.} = var self = SharedDatastore() res = newThreadResult(ThreadDatastorePtr) - res[].signal = newSignal() + res[].signal = ThreadSignalPtr.new().valueOr: + return failure newException(DatastoreError, "error creating signal") res.createThreadDatastore(backend) await wait(res[].signal) diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index f9438a0..fb289ea 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -23,7 +23,7 @@ type Success Error - ThreadResult*[T: DataBuffer | void] = object + ThreadResult*[T: DataBuffer | void | ThreadDatastorePtr] = object state*: ThreadResultKind signal*: ThreadSignalPtr value*: T