mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-07 08:03:13 +00:00
updates
This commit is contained in:
parent
0790ccacef
commit
a9e90766cc
@ -81,13 +81,13 @@ proc newSharedDataStore*(
|
||||
self = SharedDatastore()
|
||||
res = newThreadResult(ThreadDatastorePtr)
|
||||
|
||||
res[].value = newSharedPtr(ThreadDatastore)
|
||||
res[].value = newUniquePtr(ThreadDatastore)
|
||||
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()
|
||||
await wait(res[].signal)
|
||||
res[].signal.close()
|
||||
|
||||
success self
|
||||
|
||||
@ -32,9 +32,9 @@ type
|
||||
TResult*[T] = SharedPtr[ThreadResult[T]]
|
||||
|
||||
ThreadBackendKind* {.pure.} = enum
|
||||
TestBackend
|
||||
FSBackend
|
||||
SQliteBackend
|
||||
TestBackend
|
||||
|
||||
ThreadBackend* = object
|
||||
case kind*: ThreadBackendKind
|
||||
@ -52,20 +52,26 @@ type
|
||||
tp: Taskpool
|
||||
backendDatastore: Datastore
|
||||
|
||||
ThreadDatastorePtr* = SharedPtr[ThreadDatastore]
|
||||
ThreadDatastorePtr* = UniquePtr[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,
|
||||
count: int,
|
||||
) {.raises: [].} =
|
||||
## starts up a FS instance on a give thread
|
||||
var
|
||||
ret: TResult[ThreadDatastorePtr]
|
||||
backend: ThreadBackend
|
||||
echo "\n\nstartupDatastore: ret:\n", ret.repr
|
||||
|
||||
echo "\nstartupDatastore: backend:\n", backend.repr
|
||||
echo "\nstartupDatastore: count:\n", count.repr
|
||||
|
||||
echo ""
|
||||
case backend.kind:
|
||||
of FSBackend:
|
||||
let ds = FSDatastore.new(
|
||||
@ -88,6 +94,7 @@ proc startupDatastore(
|
||||
else:
|
||||
discard
|
||||
|
||||
echo "startupDatastore: signal"
|
||||
discard ret[].signal.fireSync().get()
|
||||
|
||||
proc getTask*(
|
||||
@ -123,17 +130,14 @@ proc createThreadDatastore*(
|
||||
|
||||
try:
|
||||
echo "createThreadDatastore: start"
|
||||
# var tp = Taskpool.new(num_threads = 2)
|
||||
ret[].value[].tp = Taskpool.new(num_threads = 2) ##\
|
||||
## Default to one thread, multiple threads \
|
||||
## will require more work
|
||||
echo "ret.tp: ", ret[].repr
|
||||
ret[].value[].tp.spawn startupDatastore()
|
||||
# ret[].value[].tp.spawn startupDatastore(ret, backend)
|
||||
ret[].value[].tp = Taskpool.new(num_threads = 2)
|
||||
echo "\n\ncreateThreadDatastore:tp:\n", ret[].repr
|
||||
ret[].value[].tp.spawn startupDatastore(ret, backend, 22)
|
||||
echo "createThreadDatastore: done"
|
||||
ret[].state = Success
|
||||
|
||||
except Exception as exc:
|
||||
# ret[].state = Error
|
||||
# ret[].error = exc.toBuffer()
|
||||
ret[].state = Error
|
||||
ret[].error = exc.toBuffer()
|
||||
discard
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user