mirror of
https://github.com/logos-storage/apatheia.git
synced 2026-01-02 13:03:11 +00:00
updates
This commit is contained in:
parent
b53cced09e
commit
1e75c8458e
@ -50,6 +50,11 @@ type
|
||||
template toOpenArray*[T](arr: OpenArrayHolder[T]): auto =
|
||||
system.toOpenArray(arr.data, 0, arr.size)
|
||||
|
||||
proc toArrayHolder*[T](data: seq[T]): OpenArrayHolder[T] =
|
||||
OpenArrayHolder[T](
|
||||
data: cast[ptr UncheckedArray[T]](unsafeAddr(data[0])), size: data.len()
|
||||
)
|
||||
|
||||
func jobId*[T](fut: Future[T]): JobId =
|
||||
JobId fut.id()
|
||||
|
||||
@ -93,9 +98,7 @@ template checkJobArgs*[T](exp: seq[T], fut: untyped): OpenArrayHolder[T] =
|
||||
when T is SupportedSeqTypes:
|
||||
let rval = SeqRetainer[T](data: exp)
|
||||
retainMemory(fut.jobId(), rval)
|
||||
let expPtr = OpenArrayHolder[T](
|
||||
data: cast[ptr UncheckedArray[T]](unsafeAddr(rval.data[0])), size: rval.data.len()
|
||||
)
|
||||
let expPtr = toArrayHolder(rval.data)
|
||||
expPtr
|
||||
else:
|
||||
{.error: "unsupported sequence type for job argument: " & $typeof(seq[T]).}
|
||||
@ -103,9 +106,7 @@ template checkJobArgs*[T](exp: seq[T], fut: untyped): OpenArrayHolder[T] =
|
||||
template checkJobArgs*(exp: string, fut: untyped): OpenArrayHolder[char] =
|
||||
let rval = StrRetainer(data: exp)
|
||||
retainMemory(fut.jobId(), rval)
|
||||
let expPtr = OpenArrayHolder[char](
|
||||
data: cast[ptr UncheckedArray[char]](unsafeAddr(rval.data[0])), size: rval.data.len()
|
||||
)
|
||||
let expPtr = toArrayHolder(rval.data)
|
||||
expPtr
|
||||
|
||||
template checkJobArgs*(exp: typed, fut: untyped): auto =
|
||||
|
||||
@ -7,6 +7,7 @@ import chronos/unittest2/asynctests
|
||||
import taskpools
|
||||
|
||||
import apatheia/queues
|
||||
import apatheia/jobs
|
||||
|
||||
type
|
||||
DataObj = ref object
|
||||
@ -14,8 +15,8 @@ type
|
||||
|
||||
proc worker(data: OpenArrayHolder[char], queue: SignalQueue[int]) =
|
||||
os.sleep(1_000)
|
||||
echo "worker: ", data
|
||||
discard queue.send(data.len())
|
||||
echo "worker: ", data.toOpenArray()
|
||||
discard queue.send(data.toOpenArray().len())
|
||||
|
||||
proc finalizer(obj: DataObj) =
|
||||
echo "FINALIZE!!"
|
||||
@ -27,7 +28,7 @@ proc runTest(tp: TaskPool, queue: SignalQueue[int]) {.async.} =
|
||||
obj.data = "hello world!".toSeq
|
||||
|
||||
echo "spawn worker"
|
||||
tp.spawn worker(obj.data, queue)
|
||||
tp.spawn worker(toArrayHolder(obj.data), queue)
|
||||
|
||||
let res =
|
||||
await wait(queue).wait(100.milliseconds)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user