From ab850d41144d1efd26cd651fdff133c149a6cb86 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Thu, 24 Aug 2023 20:44:50 -0700 Subject: [PATCH] updates --- datastore/threadbackend.nim | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index f3915fe..89385e7 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -50,17 +50,24 @@ type ThreadDatastore* = object tp: Taskpool - backendDatastore: Datastore + backendDatastore: ThreadBackendKind ThreadDatastorePtr* = UniquePtr[ThreadDatastore] + Test* = object + count*: int + + TestPtr* = SharedPtr[Test] + +var fsBackend {.threadvar.}: FSDatastore + proc newThreadResult*[T](tp: typedesc[T]): TResult[T] = newSharedPtr(ThreadResult[T]) proc startupDatastore( ret: TResult[ThreadDatastorePtr], backend: ThreadBackend, - count: int, + count: TestPtr, ) {.raises: [].} = ## starts up a FS instance on a give thread var @@ -81,15 +88,13 @@ proc startupDatastore( ignoreProtected = backend.ignoreProtected ) if ds.isOk: - ret[].value[].backendDatastore = ds.get() + fsBackend = ds.get() ret[].state = Success else: ret[].state = Error - ret[].value[].backendDatastore = ds.get() - ret[].state = Success + ret[].error = newException(DatastoreError, "error creating signal").toBuffer() of TestBackend: echo "startupDatastore: TestBackend" - ret[].value[].backendDatastore = nil ret[].state = Success else: discard @@ -113,16 +118,6 @@ proc putTask*( ) = discard -# proc close*( -# self: ThreadDatastore, -# signal: ThreadSignalPtr, -# ): TResult[void] = -# try: -# self[].tp.shutdown() -# return ok() -# except Exception as exc: -# return TResult[void].new() - proc createThreadDatastore*( ret: TResult[ThreadDatastorePtr], backend: ThreadBackend, @@ -132,7 +127,8 @@ proc createThreadDatastore*( echo "createThreadDatastore: start" ret[].value[].tp = Taskpool.new(num_threads = 2) echo "\n\ncreateThreadDatastore:tp:\n", ret[].repr - ret[].value[].tp.spawn startupDatastore(ret, backend, 22) + ret[].value[].tp.spawn startupDatastore( + ret, backend, newSharedPtr(Test(count: 22))) echo "createThreadDatastore: done" ret[].state = Success