mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-03 22:23:10 +00:00
updates
This commit is contained in:
parent
ab850d4114
commit
a3cff9861b
@ -81,7 +81,7 @@ proc newSharedDataStore*(
|
|||||||
self = SharedDatastore()
|
self = SharedDatastore()
|
||||||
res = newThreadResult(ThreadDatastorePtr)
|
res = newThreadResult(ThreadDatastorePtr)
|
||||||
|
|
||||||
res[].value = newUniquePtr(ThreadDatastore)
|
res[].value = newSharedPtr(ThreadDatastore)
|
||||||
res[].signal = ThreadSignalPtr.new().valueOr:
|
res[].signal = ThreadSignalPtr.new().valueOr:
|
||||||
return failure newException(DatastoreError, "error creating signal")
|
return failure newException(DatastoreError, "error creating signal")
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,7 @@ type
|
|||||||
TResult*[T] = SharedPtr[ThreadResult[T]]
|
TResult*[T] = SharedPtr[ThreadResult[T]]
|
||||||
|
|
||||||
ThreadBackendKind* {.pure.} = enum
|
ThreadBackendKind* {.pure.} = enum
|
||||||
|
NoBackend
|
||||||
TestBackend
|
TestBackend
|
||||||
FSBackend
|
FSBackend
|
||||||
SQliteBackend
|
SQliteBackend
|
||||||
@ -47,20 +48,20 @@ type
|
|||||||
discard
|
discard
|
||||||
of TestBackend:
|
of TestBackend:
|
||||||
count*: int
|
count*: int
|
||||||
|
of NoBackend:
|
||||||
|
discard
|
||||||
|
|
||||||
ThreadDatastore* = object
|
ThreadDatastore* = object
|
||||||
tp: Taskpool
|
tp: Taskpool
|
||||||
backendDatastore: ThreadBackendKind
|
backendDatastore: ThreadBackendKind
|
||||||
|
|
||||||
ThreadDatastorePtr* = UniquePtr[ThreadDatastore]
|
ThreadDatastorePtr* = SharedPtr[ThreadDatastore]
|
||||||
|
|
||||||
Test* = object
|
Test* = object
|
||||||
count*: int
|
count*: ThreadBackendKind
|
||||||
|
|
||||||
TestPtr* = SharedPtr[Test]
|
TestPtr* = SharedPtr[Test]
|
||||||
|
|
||||||
var fsBackend {.threadvar.}: FSDatastore
|
|
||||||
|
|
||||||
proc newThreadResult*[T](tp: typedesc[T]): TResult[T] =
|
proc newThreadResult*[T](tp: typedesc[T]): TResult[T] =
|
||||||
newSharedPtr(ThreadResult[T])
|
newSharedPtr(ThreadResult[T])
|
||||||
|
|
||||||
@ -70,9 +71,6 @@ proc startupDatastore(
|
|||||||
count: TestPtr,
|
count: TestPtr,
|
||||||
) {.raises: [].} =
|
) {.raises: [].} =
|
||||||
## starts up a FS instance on a give thread
|
## starts up a FS instance on a give thread
|
||||||
var
|
|
||||||
ret: TResult[ThreadDatastorePtr]
|
|
||||||
backend: ThreadBackend
|
|
||||||
echo "\n\nstartupDatastore: ret:\n", ret.repr
|
echo "\n\nstartupDatastore: ret:\n", ret.repr
|
||||||
|
|
||||||
echo "\nstartupDatastore: backend:\n", backend.repr
|
echo "\nstartupDatastore: backend:\n", backend.repr
|
||||||
@ -88,13 +86,15 @@ proc startupDatastore(
|
|||||||
ignoreProtected = backend.ignoreProtected
|
ignoreProtected = backend.ignoreProtected
|
||||||
)
|
)
|
||||||
if ds.isOk:
|
if ds.isOk:
|
||||||
fsBackend = ds.get()
|
# ret[].value[].backendDatastore = ds.get()
|
||||||
ret[].state = Success
|
ret[].state = Success
|
||||||
else:
|
else:
|
||||||
ret[].state = Error
|
ret[].state = Error
|
||||||
ret[].error = newException(DatastoreError, "error creating signal").toBuffer()
|
# ret[].value[].backendDatastore = ds.get()
|
||||||
|
ret[].state = Success
|
||||||
of TestBackend:
|
of TestBackend:
|
||||||
echo "startupDatastore: TestBackend"
|
echo "startupDatastore: TestBackend"
|
||||||
|
ret[].value[].backendDatastore = TestBackend
|
||||||
ret[].state = Success
|
ret[].state = Success
|
||||||
else:
|
else:
|
||||||
discard
|
discard
|
||||||
@ -119,16 +119,17 @@ proc putTask*(
|
|||||||
discard
|
discard
|
||||||
|
|
||||||
proc createThreadDatastore*(
|
proc createThreadDatastore*(
|
||||||
ret: TResult[ThreadDatastorePtr],
|
ret: var TResult[ThreadDatastorePtr],
|
||||||
backend: ThreadBackend,
|
backend: ThreadBackend,
|
||||||
) =
|
) =
|
||||||
|
|
||||||
try:
|
try:
|
||||||
echo "createThreadDatastore: start"
|
echo "createThreadDatastore: start"
|
||||||
ret[].value[].tp = Taskpool.new(num_threads = 2)
|
ret[].value[].tp = Taskpool.new(num_threads = 2)
|
||||||
echo "\n\ncreateThreadDatastore:tp:\n", ret[].repr
|
# echo "\n\ncreateThreadDatastore:tp:\n", ret[].repr
|
||||||
|
echo "\n\ncreateThreadDatastore:value:\n", ret[].value.repr
|
||||||
ret[].value[].tp.spawn startupDatastore(
|
ret[].value[].tp.spawn startupDatastore(
|
||||||
ret, backend, newSharedPtr(Test(count: 22)))
|
ret, backend, newSharedPtr(Test(count: FSBackend)))
|
||||||
echo "createThreadDatastore: done"
|
echo "createThreadDatastore: done"
|
||||||
ret[].state = Success
|
ret[].state = Success
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user