mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-05 23:23:10 +00:00
adding sharedds get
This commit is contained in:
parent
5501126b99
commit
93898c4e24
@ -47,7 +47,18 @@ method get*(
|
|||||||
self: SharedDatastore,
|
self: SharedDatastore,
|
||||||
key: Key
|
key: Key
|
||||||
): Future[?!seq[byte]] {.async.} =
|
): 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*(
|
method put*(
|
||||||
self: SharedDatastore,
|
self: SharedDatastore,
|
||||||
|
|||||||
@ -98,7 +98,6 @@ proc startupDatastore(
|
|||||||
ret[].state = Success
|
ret[].state = Success
|
||||||
else:
|
else:
|
||||||
ret[].state = Error
|
ret[].state = Error
|
||||||
# ret[].value[].backendDatastore = ds.get()
|
|
||||||
ret[].state = Success
|
ret[].state = Success
|
||||||
of TestBackend:
|
of TestBackend:
|
||||||
echo "startupDatastore: TestBackend"
|
echo "startupDatastore: TestBackend"
|
||||||
@ -110,12 +109,30 @@ proc startupDatastore(
|
|||||||
echo "startupDatastore: signal", ret[].signal.fireSync().get()
|
echo "startupDatastore: signal", ret[].signal.fireSync().get()
|
||||||
|
|
||||||
proc getTask*(
|
proc getTask*(
|
||||||
self: ThreadDatastorePtr,
|
ret: TResult[DataBuffer],
|
||||||
|
backend: ThreadBackendKind,
|
||||||
key: KeyBuffer,
|
key: KeyBuffer,
|
||||||
ret: TResult[DataBuffer]
|
|
||||||
) =
|
) =
|
||||||
# return ok(DataBuffer.new())
|
# 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*(
|
proc putTask*(
|
||||||
ret: TResult[void],
|
ret: TResult[void],
|
||||||
@ -129,8 +146,6 @@ proc putTask*(
|
|||||||
|
|
||||||
print "thrbackend: putTask: fire", ret[].signal.fireSync().get()
|
print "thrbackend: putTask: fire", ret[].signal.fireSync().get()
|
||||||
|
|
||||||
import os
|
|
||||||
|
|
||||||
proc put*(
|
proc put*(
|
||||||
ret: TResult[void],
|
ret: TResult[void],
|
||||||
tds: ThreadDatastorePtr,
|
tds: ThreadDatastorePtr,
|
||||||
@ -138,16 +153,12 @@ proc put*(
|
|||||||
data: seq[byte]
|
data: seq[byte]
|
||||||
): TResult[void] =
|
): TResult[void] =
|
||||||
echo "thrfrontend:put: "
|
echo "thrfrontend:put: "
|
||||||
|
|
||||||
let bkey = StringBuffer.new(key.id())
|
let bkey = StringBuffer.new(key.id())
|
||||||
let bval = DataBuffer.new(data)
|
let bval = DataBuffer.new(data)
|
||||||
print "bkey: ", bkey
|
print "bkey: ", bkey
|
||||||
print "bval: ", bval
|
print "bval: ", bval
|
||||||
|
|
||||||
tds[].tp.spawn putTask(ret, tds[].backend, bkey, bval)
|
tds[].tp.spawn putTask(ret, tds[].backend, bkey, bval)
|
||||||
os.sleep(500)
|
|
||||||
print "res:bkey: ", bkey
|
|
||||||
print "res:bval: ", bval
|
|
||||||
|
|
||||||
proc createThreadDatastore*(
|
proc createThreadDatastore*(
|
||||||
ret: var TResult[ThreadDatastorePtr],
|
ret: var TResult[ThreadDatastorePtr],
|
||||||
|
|||||||
@ -32,6 +32,14 @@ suite "Test Basic SharedDatastore":
|
|||||||
let res1 = await sds.put(key1, "value for 1".toBytes())
|
let res1 = await sds.put(key1, "value for 1".toBytes())
|
||||||
echo "res1: ", res1.repr
|
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":
|
# suite "Test Basic FSDatastore":
|
||||||
# let
|
# let
|
||||||
# path = currentSourcePath() # get this file's name
|
# path = currentSourcePath() # get this file's name
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user