From 5adc7c96119143578ed634ee288fa9fdfe0733f6 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Tue, 12 Sep 2023 13:50:42 -0600 Subject: [PATCH] this would never work --- datastore/threads/foreignbuffer.nim | 76 ----------------------------- 1 file changed, 76 deletions(-) delete mode 100644 datastore/threads/foreignbuffer.nim diff --git a/datastore/threads/foreignbuffer.nim b/datastore/threads/foreignbuffer.nim deleted file mode 100644 index 54a8720..0000000 --- a/datastore/threads/foreignbuffer.nim +++ /dev/null @@ -1,76 +0,0 @@ - -import std/locks - -type - ## Pass foreign buffers between threads. - ## - ## This is meant to be used as temporary holder - ## pointer to a foreign buffer that is being passed - ## between threads. - ## - ## The receiving thread should copy the contained buffer - ## to it's local GC as soon as possible. Should only be - ## used with refgc. - ## - ForeignBuff*[T] = object - lock: Lock - buf: ptr UncheckedArray[T] - len: int - cell: ForeignCell - -proc `=sink`[T](self: var ForeignBuff[T], b: ForeignBuff[T]) = - withLock(self.lock): - `=destroy`(self) - wasMoved(self) - self.len = b.len - self.buf = b.buf - self.cell = b.cell - -proc `=copy`[T](self: var ForeignBuff[T], b: ForeignBuff[T]) {.error.} - -proc `=destroy`[T](self: var ForeignBuff[T]) = - withLock(self.lock): - if self.cell.data != nil: - echo "DESTROYING CELL" - dispose self.cell - -proc len*[T](self: ForeignBuff[T]): int = - return self.len - -proc get*[T](self: ForeignBuff[T]): ptr UncheckedArray[T] = - self.buf - -proc attach*[T]( - self: var ForeignBuff[T], - buf: openArray[T]) = - ## Attach self foreign pointer to this buffer - ## - withLock(self.lock): - self.buf = makeUncheckedArray[T](baseAddr buf) - self.len = buf.len - self.cell = protect(self.buf) - -func attached*[T]() = - ## Check if self foreign pointer is attached to this buffer - ## - withLock(self.lock): - return self.but != nil and self.cell.data != nil - -## NOTE: Converters might return copies of the buffer, -## this should be overall safe since we want to copy -## the buffer local GC anyway. -converter toSeq*[T](self: ForeignBuff[T]): seq[T] | lent seq[T] = - @(self.buf.toOpenArray(0, self.len - 1)) - -converter toString*[T](self: ForeignBuff[T]): string | lent string = - $(self.buf.toOpenArray(0, self.len - 1)) - -converter getVal*[T](self: ForeignBuff[T]): ptr UncheckedArray[T] = - self.buf - -func init*[T](_: type ForeignBuff[T]): ForeignBuff[T] = - var - lock = Lock() - - lock.initLock() - ForeignBuff[T](lock: lock)