From dbce1538fd4248fc2ca8dcc91f9f5b11f6b4d9b8 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Thu, 24 Aug 2023 20:07:03 -0700 Subject: [PATCH] fixing tp setup --- datastore/sharedds.nim | 11 ++++++----- datastore/threadbackend.nim | 26 +++++++++++++++++--------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/datastore/sharedds.nim b/datastore/sharedds.nim index 0f0619b..e7eba27 100644 --- a/datastore/sharedds.nim +++ b/datastore/sharedds.nim @@ -79,13 +79,14 @@ proc newSharedDataStore*( var self = SharedDatastore() - res = newThreadResult(ThreadDatastorePtr) + # res = newThreadResult(ThreadDatastorePtr) + res = cast[ThreadDatastorePtr](allocShared0(sizeof(ThreadDatastorePtr))) - res[].signal = ThreadSignalPtr.new().valueOr: - return failure newException(DatastoreError, "error creating signal") + # res[].signal = ThreadSignalPtr.new().valueOr: + # return failure newException(DatastoreError, "error creating signal") res.createThreadDatastore(backend) - await wait(res[].signal) - res[].signal.close() + # await wait(res[].signal) + # res[].signal.close() success self diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index f7886f3..680cbeb 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -52,16 +52,20 @@ type tp: Taskpool backendDatastore: Datastore - ThreadDatastorePtr* = SharedPtr[ThreadDatastore] + ThreadDatastorePtr* = ptr ThreadDatastore proc newThreadResult*[T](tp: typedesc[T]): TResult[T] = newSharedPtr(ThreadResult[T]) proc startupDatastore( - ret: TResult[ThreadDatastorePtr], - backend: ThreadBackend, -) {.raises: [].} = + # ret: TResult[ThreadDatastorePtr], + # backend: ThreadBackend, + ) {.raises: [].} = ## starts up a FS instance on a give thread + var + ret: TResult[ThreadDatastorePtr] + backend: ThreadBackend + case backend.kind: of FSBackend: let ds = FSDatastore.new( @@ -113,19 +117,23 @@ proc putTask*( # return TResult[void].new() proc createThreadDatastore*( - ret: TResult[ThreadDatastorePtr], + ret: var ThreadDatastorePtr, backend: ThreadBackend, ) = try: echo "createThreadDatastore: start" - ret[].value[].tp = Taskpool.new(num_threads = 2) ##\ + # var tp = Taskpool.new(num_threads = 2) + ret[].tp = Taskpool.new(num_threads = 2) ##\ ## Default to one thread, multiple threads \ ## will require more work - ret[].value[].tp.spawn startupDatastore(ret, backend) + echo "ret.tp: ", ret[].tp.repr + ret[].tp.spawn startupDatastore() + # ret[].value[].tp.spawn startupDatastore(ret, backend) echo "createThreadDatastore: done" except Exception as exc: - ret[].state = Error - ret[].error = exc.toBuffer() + # ret[].state = Error + # ret[].error = exc.toBuffer() + discard