From 934cb5ed4014d729c2dbadf19fbd4e3c2d902726 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Fri, 16 Feb 2024 14:56:14 -0700 Subject: [PATCH] rename --- src/apatheia/jobs.nim | 12 +++++++----- src/apatheia/memholders.nim | 30 ------------------------------ src/apatheia/memretainers.nim | 31 +++++++++++++++++++++++++++++++ tests/tjobs.nim | 2 +- 4 files changed, 39 insertions(+), 36 deletions(-) delete mode 100644 src/apatheia/memholders.nim create mode 100644 src/apatheia/memretainers.nim diff --git a/src/apatheia/jobs.nim b/src/apatheia/jobs.nim index 4af2ea3..5905167 100644 --- a/src/apatheia/jobs.nim +++ b/src/apatheia/jobs.nim @@ -2,7 +2,7 @@ import std/tables import std/macros import ./queues -import ./memholders +import ./memretainers import taskpools import chronos @@ -35,6 +35,8 @@ type data*: ptr UncheckedArray[T] size*: int + SupportedSeqTypes* = byte | SomeInteger | SomeFloat + template toOpenArray*[T](arr: OpenArrayHolder[T]): auto = system.toOpenArray(arr.data, 0, arr.size) @@ -66,7 +68,7 @@ proc createFuture*[T](jobs: JobQueue[T], name: static string): (JobResult[T], Fu let fut = newFuture[T](name) let id = fut.jobId() jobs.futures[id] = fut - trace "jobs added: ", numberJobs = jobs.futures.len() + trace "job added: ", numberJobs = jobs.futures.len() return (JobResult[T](id: id, queue: jobs.queue), fut) proc newJobQueue*[T]( @@ -79,9 +81,9 @@ proc newJobQueue*[T]( asyncSpawn(processJobs(result)) template checkJobArgs*[T](exp: seq[T], fut: untyped): OpenArrayHolder[T] = - when T is byte | SomeInteger | SomeFloat: - let rval = SeqHolder[T](data: exp) - fut.jobId().retainMemory(rval) + 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() ) diff --git a/src/apatheia/memholders.nim b/src/apatheia/memholders.nim deleted file mode 100644 index 1159e81..0000000 --- a/src/apatheia/memholders.nim +++ /dev/null @@ -1,30 +0,0 @@ -import std/tables - -import ./types -export types - -type - MemHolder* = ref object of RootObj - - SeqHolder*[T] = ref object of MemHolder - data*: seq[T] - - StrHolder*[T] = ref object of MemHolder - data*: string - -var memHolderTable = newTable[uint, seq[MemHolder]]() - -proc retainMemory*(id: JobId, mem: MemHolder) {.gcsafe, raises: [].} = - {.cast(gcsafe).}: - memHolderTable[].withValue(id, value): - value[].add(mem) - do: - memHolderTable[id] = @[mem] - -proc releaseMemory*(id: JobId) {.gcsafe, raises: [].} = - {.cast(gcsafe).}: - memHolderTable.del(id) - -proc retainedMemoryCount*(): int {.gcsafe, raises: [].} = - {.cast(gcsafe).}: - memHolderTable.len() diff --git a/src/apatheia/memretainers.nim b/src/apatheia/memretainers.nim new file mode 100644 index 0000000..573069a --- /dev/null +++ b/src/apatheia/memretainers.nim @@ -0,0 +1,31 @@ +import std/tables + +import ./types +export types + +type + Retainer* = ref object of RootObj + + SeqRetainer*[T] = ref object of Retainer + data*: seq[T] + + StrRetainer*[T] = ref object of Retainer + data*: string + + +var memoryRetainerTable = newTable[uint, seq[Retainer]]() + +proc retainMemory*(id: JobId, mem: Retainer) {.gcsafe, raises: [].} = + {.cast(gcsafe).}: + memoryRetainerTable[].withValue(id, value): + value[].add(mem) + do: + memoryRetainerTable[id] = @[mem] + +proc releaseMemory*(id: JobId) {.gcsafe, raises: [].} = + {.cast(gcsafe).}: + memoryRetainerTable.del(id) + +proc retainedMemoryCount*(): int {.gcsafe, raises: [].} = + {.cast(gcsafe).}: + memoryRetainerTable.len() diff --git a/tests/tjobs.nim b/tests/tjobs.nim index e1526b8..1bbcab1 100644 --- a/tests/tjobs.nim +++ b/tests/tjobs.nim @@ -8,7 +8,7 @@ import taskpools import apatheia/queues import apatheia/jobs -import apatheia/memholders +import apatheia/memretainers proc addNumsRaw(a, b: float): float = os.sleep(50)