mirror of
https://github.com/logos-storage/apatheia.git
synced 2026-01-02 13:03:11 +00:00
rename
This commit is contained in:
parent
1a6569709e
commit
934cb5ed40
@ -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()
|
||||
)
|
||||
|
||||
@ -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()
|
||||
31
src/apatheia/memretainers.nim
Normal file
31
src/apatheia/memretainers.nim
Normal file
@ -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()
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user