diff --git a/datastore/threadproxyds.nim b/datastore/threadproxyds.nim index 67a1842..ea11e5c 100644 --- a/datastore/threadproxyds.nim +++ b/datastore/threadproxyds.nim @@ -26,7 +26,7 @@ method has*( key: Key ): Future[?!bool] {.async.} = - let sig = SharedSignal.new(0) + let sig = SharedSignal.new() await sig.acquireSig() var ret = newThreadResult(bool) @@ -43,7 +43,7 @@ method delete*( key: Key ): Future[?!void] {.async.} = - let sig = SharedSignal.new(0) + let sig = SharedSignal.new() await sig.acquireSig() var ret = newThreadResult(void) @@ -76,7 +76,7 @@ method get*( ## probably be switched to use a single ThreadSignal ## for the entire batch - let sig = SharedSignal.new(0) + let sig = SharedSignal.new() await sig.acquireSig() var ret = newThreadResult(ValueBuffer) @@ -96,7 +96,7 @@ method put*( ): Future[?!void] {.async.} = echoed "put request args: ", $getThreadId() - let sig = SharedSignal.new(0) + let sig = SharedSignal.new() await sig.acquireSig() let ret = newSharedPtr(ThreadResult[void]) @@ -132,7 +132,7 @@ method query*( query: Query ): Future[?!QueryIter] {.async.} = - let sig = SharedSignal.new(0) + let sig = SharedSignal.new() await sig.acquireSig() var ret = newThreadResult(QueryResponseBuffer) @@ -204,7 +204,7 @@ proc newThreadProxyDatastore*( var self = ThreadProxyDatastore() var value = newSharedPtr(ThreadDatastore) # let dsCell = protect(cast[pointer](ds)) - GC_ref(ds) ## TODO: is this needed? + # GC_ref(ds) ## TODO: is this needed? try: value[].ds = ds diff --git a/datastore/threads/threadbackend.nim b/datastore/threads/threadbackend.nim index 48cc8a6..f362ff4 100644 --- a/datastore/threads/threadbackend.nim +++ b/datastore/threads/threadbackend.nim @@ -133,7 +133,7 @@ proc putTask*( db: DataBuffer, ) = - os.sleep(400) + # os.sleep(400) # var ret = ret echo "\n" echoed "putTask: ", $getThreadId() diff --git a/datastore/threads/threadsignalpool.nim b/datastore/threads/threadsignalpool.nim index e14536e..1d7b7ea 100644 --- a/datastore/threads/threadsignalpool.nim +++ b/datastore/threads/threadsignalpool.nim @@ -90,9 +90,8 @@ proc `=destroy`*(x: var SharedSignalObj) = release(x.sigptr) x.sigptr = nil -proc new*(tp: typedesc[SharedSignal], - count: int): SharedSignal = - result = newSharedPtr[SharedSignalObj](SharedSignalObj, manualCount = count) +proc new*(tp: typedesc[SharedSignal]): SharedSignal = + result = newSharedPtr[SharedSignalObj](SharedSignalObj) proc acquireSig*(sig: SharedSignal): Future[void] {.async.} = sig[].sigptr = await getThreadSignal() diff --git a/tests/datastore/testthreadproxyds.nim b/tests/datastore/testthreadproxyds.nim index 7f36d08..3536bf5 100644 --- a/tests/datastore/testthreadproxyds.nim +++ b/tests/datastore/testthreadproxyds.nim @@ -40,23 +40,21 @@ suite "Test Basic ThreadProxyDatastore": print "res1: ", res1 check res1.isOk + test "check get": + # echo "\n\n=== get ===" + let res2 = await sds.get(key1) + check res2.get() == data + print "get res2: ", res2 + var val = "" + for c in res2.get(): + val &= char(c) + print "get res2: ", $val -# GC_fullCollect() # this fails due to MemoryStore already being freed... - -# test "check get": -# # echo "\n\n=== get ===" -# let res2 = await sds.get(key1) -# check res2.get() == data -# var val = "" -# for c in res2.get(): -# val &= char(c) -# # print "get res2: ", $val - -# # echo "\n\n=== put cancel ===" -# # # let res1 = await sds.put(key1, "value for 1".toBytes()) -# # let res3 = sds.put(key1, "value for 1".toBytes()) -# # res3.cancel() -# # # print "res3: ", res3 + # echo "\n\n=== put cancel ===" + # # let res1 = await sds.put(key1, "value for 1".toBytes()) + # let res3 = sds.put(key1, "value for 1".toBytes()) + # res3.cancel() + # # print "res3: ", res3 # suite "Test Basic ThreadProxyDatastore": @@ -104,3 +102,5 @@ suite "Test Basic ThreadProxyDatastore": # check res.len() > 0 + +# GC_fullCollect() # this fails due to MemoryStore already being freed...