mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-09 09:03:07 +00:00
passing put args
This commit is contained in:
parent
3da60e021b
commit
f66531de06
@ -34,7 +34,7 @@ proc `=destroy`*(x: var DataBuffer) =
|
||||
if x.buf != nil and x.cnt != nil:
|
||||
let res = atomicSubFetch(x.cnt, 1, ATOMIC_ACQUIRE)
|
||||
if res == 0:
|
||||
when isMainModule:
|
||||
when isMainModule or true:
|
||||
echo "buffer: FREE: ", repr x.buf.pointer, " ", x.cnt[]
|
||||
deallocShared(x.buf)
|
||||
deallocShared(x.cnt)
|
||||
|
||||
@ -13,6 +13,8 @@ import ./datastore
|
||||
import ./threadbackend
|
||||
import threading/smartptrs
|
||||
|
||||
import pretty
|
||||
|
||||
export key, query, ThreadBackend
|
||||
|
||||
push: {.upraises: [].}
|
||||
@ -53,10 +55,16 @@ method put*(
|
||||
data: seq[byte]
|
||||
): Future[?!void] {.async.} =
|
||||
|
||||
let signal = ThreadSignalPtr.new().valueOr:
|
||||
var res = newThreadResult(void)
|
||||
res[].signal = ThreadSignalPtr.new().valueOr:
|
||||
return failure newException(DatastoreError, "error creating signal")
|
||||
|
||||
await wait(signal)
|
||||
put(res, self.tds, key, data)
|
||||
await wait(res[].signal)
|
||||
res[].signal.close()
|
||||
|
||||
echo "\nSharedDataStore:put:value: ", res[].repr
|
||||
|
||||
return success()
|
||||
|
||||
method put*(
|
||||
@ -93,4 +101,6 @@ proc newSharedDataStore*(
|
||||
echo "\nnewSharedDataStore:state: ", res[].state.repr
|
||||
echo "\nnewSharedDataStore:value: ", res[].value[].backend.repr
|
||||
|
||||
self.tds = res[].value
|
||||
|
||||
success self
|
||||
|
||||
@ -12,6 +12,8 @@ import threading/smartptrs
|
||||
|
||||
import fsds
|
||||
|
||||
import pretty
|
||||
|
||||
export key, query, smartptrs, databuffer
|
||||
|
||||
push: {.upraises: [].}
|
||||
@ -52,7 +54,7 @@ type
|
||||
discard
|
||||
|
||||
ThreadDatastore* = object
|
||||
tp: Taskpool
|
||||
tp*: Taskpool
|
||||
backend*: ThreadBackendKind
|
||||
|
||||
ThreadDatastorePtr* = SharedPtr[ThreadDatastore]
|
||||
@ -116,12 +118,36 @@ proc getTask*(
|
||||
discard
|
||||
|
||||
proc putTask*(
|
||||
self: ThreadDatastorePtr,
|
||||
ret: TResult[void],
|
||||
backend: ThreadBackendKind,
|
||||
key: KeyBuffer,
|
||||
data: DataBuffer,
|
||||
ret: TResult[void]
|
||||
) =
|
||||
discard
|
||||
print "\nthrbackend: putTask: ", ret[]
|
||||
print "\nthrbackend: putTask:key: ", key
|
||||
print "\nthrbackend: putTask:data: ", data
|
||||
|
||||
print "thrbackend: putTask: fire", ret[].signal.fireSync().get()
|
||||
|
||||
import os
|
||||
|
||||
proc put*(
|
||||
ret: TResult[void],
|
||||
tds: ThreadDatastorePtr,
|
||||
key: Key,
|
||||
data: seq[byte]
|
||||
): TResult[void] =
|
||||
echo "thrfrontend:put: "
|
||||
|
||||
let bkey = StringBuffer.new(key.id())
|
||||
let bval = DataBuffer.new(data)
|
||||
print "bkey: ", bkey
|
||||
print "bval: ", bval
|
||||
|
||||
tds[].tp.spawn putTask(ret, tds[].backend, bkey, bval)
|
||||
os.sleep(500)
|
||||
print "res:bkey: ", bkey
|
||||
print "res:bval: ", bval
|
||||
|
||||
proc createThreadDatastore*(
|
||||
ret: var TResult[ThreadDatastorePtr],
|
||||
|
||||
@ -17,12 +17,21 @@ suite "Test Basic SharedDatastore":
|
||||
|
||||
test "check create":
|
||||
|
||||
var sds: SharedDatastore
|
||||
|
||||
let backend = ThreadBackend(
|
||||
kind: TestBackend,
|
||||
)
|
||||
let sds = await newSharedDataStore(backend)
|
||||
let res = await newSharedDataStore(backend)
|
||||
check res.isOk()
|
||||
sds = res.get()
|
||||
# echo "sds: ", repr sds
|
||||
|
||||
echo "\n\n=== put ==="
|
||||
let key1 = Key.init("/a").tryGet
|
||||
let res1 = await sds.put(key1, "value for 1".toBytes())
|
||||
echo "res1: ", res1.repr
|
||||
|
||||
# suite "Test Basic FSDatastore":
|
||||
# let
|
||||
# path = currentSourcePath() # get this file's name
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user