mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-02 21:53:05 +00:00
adding sharedds get
This commit is contained in:
parent
f66531de06
commit
0b2e016883
@ -47,7 +47,18 @@ method get*(
|
||||
self: SharedDatastore,
|
||||
key: Key
|
||||
): Future[?!seq[byte]] {.async.} =
|
||||
return success(newSeq[byte]())
|
||||
|
||||
var res = newThreadResult(DataBuffer)
|
||||
res[].signal = ThreadSignalPtr.new().valueOr:
|
||||
return failure newException(DatastoreError, "error creating signal")
|
||||
|
||||
get(res, self.tds, key)
|
||||
await wait(res[].signal)
|
||||
res[].signal.close()
|
||||
|
||||
echo "\nSharedDataStore:put:value: ", res[].repr
|
||||
let data = res[].value.toSeq(byte)
|
||||
return success(data)
|
||||
|
||||
method put*(
|
||||
self: SharedDatastore,
|
||||
|
||||
@ -98,7 +98,6 @@ proc startupDatastore(
|
||||
ret[].state = Success
|
||||
else:
|
||||
ret[].state = Error
|
||||
# ret[].value[].backendDatastore = ds.get()
|
||||
ret[].state = Success
|
||||
of TestBackend:
|
||||
echo "startupDatastore: TestBackend"
|
||||
@ -110,12 +109,30 @@ proc startupDatastore(
|
||||
echo "startupDatastore: signal", ret[].signal.fireSync().get()
|
||||
|
||||
proc getTask*(
|
||||
self: ThreadDatastorePtr,
|
||||
ret: TResult[DataBuffer],
|
||||
backend: ThreadBackendKind,
|
||||
key: KeyBuffer,
|
||||
ret: TResult[DataBuffer]
|
||||
) =
|
||||
# return ok(DataBuffer.new())
|
||||
discard
|
||||
print "\nthrbackend: getTask: ", ret[]
|
||||
print "\nthrbackend: getTask:key: ", key
|
||||
let data = DataBuffer.new("hello world!")
|
||||
print "\nthrbackend: getTask:data: ", data
|
||||
ret[].state = Success
|
||||
ret[].value = data
|
||||
|
||||
print "thrbackend: putTask: fire", ret[].signal.fireSync().get()
|
||||
|
||||
proc get*(
|
||||
ret: TResult[DataBuffer],
|
||||
tds: ThreadDatastorePtr,
|
||||
key: Key,
|
||||
) =
|
||||
echo "thrfrontend:put: "
|
||||
let bkey = StringBuffer.new(key.id())
|
||||
print "bkey: ", bkey
|
||||
|
||||
tds[].tp.spawn getTask(ret, tds[].backend, bkey)
|
||||
|
||||
proc putTask*(
|
||||
ret: TResult[void],
|
||||
@ -129,8 +146,6 @@ proc putTask*(
|
||||
|
||||
print "thrbackend: putTask: fire", ret[].signal.fireSync().get()
|
||||
|
||||
import os
|
||||
|
||||
proc put*(
|
||||
ret: TResult[void],
|
||||
tds: ThreadDatastorePtr,
|
||||
@ -138,16 +153,12 @@ proc put*(
|
||||
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],
|
||||
|
||||
@ -32,6 +32,14 @@ suite "Test Basic SharedDatastore":
|
||||
let res1 = await sds.put(key1, "value for 1".toBytes())
|
||||
echo "res1: ", res1.repr
|
||||
|
||||
echo "\n\n=== get ==="
|
||||
let res2 = await sds.get(key1)
|
||||
check res2.get() == "hello world!".toBytes()
|
||||
var val = ""
|
||||
for c in res2.get():
|
||||
val &= char(c)
|
||||
echo "res2: ", $val
|
||||
|
||||
# suite "Test Basic FSDatastore":
|
||||
# let
|
||||
# path = currentSourcePath() # get this file's name
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user