From 591b7f1fd46cc4e62468fe9ff11d0e295eeba2b3 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Thu, 24 Aug 2023 21:18:22 -0700 Subject: [PATCH] create backend --- datastore/sharedds.nim | 4 +++- datastore/threadbackend.nim | 13 ++++++++----- tests/datastore/testsharedds.nim | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/datastore/sharedds.nim b/datastore/sharedds.nim index 213c437..83504ce 100644 --- a/datastore/sharedds.nim +++ b/datastore/sharedds.nim @@ -85,9 +85,11 @@ proc newSharedDataStore*( res[].signal = ThreadSignalPtr.new().valueOr: return failure newException(DatastoreError, "error creating signal") - echo "sds:res: ", res.repr res.createThreadDatastore(backend) await wait(res[].signal) res[].signal.close() + echo "\nnewSharedDataStore:state: ", res[].state.repr + echo "\nnewSharedDataStore:value: ", res[].value[].backend.repr + success self diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index 760322b..96f7229 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -53,7 +53,7 @@ type ThreadDatastore* = object tp: Taskpool - backendDatastore: ThreadBackendKind + backend*: ThreadBackendKind ThreadDatastorePtr* = SharedPtr[ThreadDatastore] @@ -62,6 +62,10 @@ type TestPtr* = SharedPtr[Test] +var + fsDatastore {.threadvar.}: FSDatastore ##\ + ## TODO: figure out a better way to capture this? + proc newThreadResult*[T](tp: typedesc[T]): TResult[T] = newSharedPtr(ThreadResult[T]) @@ -86,7 +90,7 @@ proc startupDatastore( ignoreProtected = backend.ignoreProtected ) if ds.isOk: - # ret[].value[].backendDatastore = ds.get() + fsDatastore = ds.get() ret[].state = Success else: ret[].state = Error @@ -94,13 +98,12 @@ proc startupDatastore( ret[].state = Success of TestBackend: echo "startupDatastore: TestBackend" - ret[].value[].backendDatastore = TestBackend + ret[].value[].backend = TestBackend ret[].state = Success else: discard - echo "startupDatastore: signal" - discard ret[].signal.fireSync().get() + echo "startupDatastore: signal", ret[].signal.fireSync().get() proc getTask*( self: ThreadDatastorePtr, diff --git a/tests/datastore/testsharedds.nim b/tests/datastore/testsharedds.nim index 54b6ae0..285dbf5 100644 --- a/tests/datastore/testsharedds.nim +++ b/tests/datastore/testsharedds.nim @@ -21,7 +21,7 @@ suite "Test Basic SharedDatastore": kind: TestBackend, ) let sds = await newSharedDataStore(backend) - echo "sds: ", repr sds + # echo "sds: ", repr sds # suite "Test Basic FSDatastore": # let