create backend

This commit is contained in:
Jaremy Creechley 2023-08-24 21:18:22 -07:00
parent ef32d38f58
commit 591b7f1fd4
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
3 changed files with 12 additions and 7 deletions

View File

@ -85,9 +85,11 @@ proc newSharedDataStore*(
res[].signal = ThreadSignalPtr.new().valueOr: res[].signal = ThreadSignalPtr.new().valueOr:
return failure newException(DatastoreError, "error creating signal") return failure newException(DatastoreError, "error creating signal")
echo "sds:res: ", res.repr
res.createThreadDatastore(backend) res.createThreadDatastore(backend)
await wait(res[].signal) await wait(res[].signal)
res[].signal.close() res[].signal.close()
echo "\nnewSharedDataStore:state: ", res[].state.repr
echo "\nnewSharedDataStore:value: ", res[].value[].backend.repr
success self success self

View File

@ -53,7 +53,7 @@ type
ThreadDatastore* = object ThreadDatastore* = object
tp: Taskpool tp: Taskpool
backendDatastore: ThreadBackendKind backend*: ThreadBackendKind
ThreadDatastorePtr* = SharedPtr[ThreadDatastore] ThreadDatastorePtr* = SharedPtr[ThreadDatastore]
@ -62,6 +62,10 @@ type
TestPtr* = SharedPtr[Test] TestPtr* = SharedPtr[Test]
var
fsDatastore {.threadvar.}: FSDatastore ##\
## TODO: figure out a better way to capture this?
proc newThreadResult*[T](tp: typedesc[T]): TResult[T] = proc newThreadResult*[T](tp: typedesc[T]): TResult[T] =
newSharedPtr(ThreadResult[T]) newSharedPtr(ThreadResult[T])
@ -86,7 +90,7 @@ proc startupDatastore(
ignoreProtected = backend.ignoreProtected ignoreProtected = backend.ignoreProtected
) )
if ds.isOk: if ds.isOk:
# ret[].value[].backendDatastore = ds.get() fsDatastore = ds.get()
ret[].state = Success ret[].state = Success
else: else:
ret[].state = Error ret[].state = Error
@ -94,13 +98,12 @@ proc startupDatastore(
ret[].state = Success ret[].state = Success
of TestBackend: of TestBackend:
echo "startupDatastore: TestBackend" echo "startupDatastore: TestBackend"
ret[].value[].backendDatastore = TestBackend ret[].value[].backend = TestBackend
ret[].state = Success ret[].state = Success
else: else:
discard discard
echo "startupDatastore: signal" echo "startupDatastore: signal", ret[].signal.fireSync().get()
discard ret[].signal.fireSync().get()
proc getTask*( proc getTask*(
self: ThreadDatastorePtr, self: ThreadDatastorePtr,

View File

@ -21,7 +21,7 @@ suite "Test Basic SharedDatastore":
kind: TestBackend, kind: TestBackend,
) )
let sds = await newSharedDataStore(backend) let sds = await newSharedDataStore(backend)
echo "sds: ", repr sds # echo "sds: ", repr sds
# suite "Test Basic FSDatastore": # suite "Test Basic FSDatastore":
# let # let