def __init__(self, buf, mutable=False): self.buf = buf self.ptr, self.nbyte, self.block_id = self.buf.open() self.nbyte_commit = self.nbyte self.ptr = get_pointer_value(self.ptr) if self.ptr is not None: self.data = np.ndarray( shape=(self.nbyte,), buffer=_address_as_buffer(self.ptr, self.nbyte), dtype=np.uint8) self.data.flags['WRITEABLE'] = mutable
def header(self): size = self.header_size if size == 0: # WAR for hdr_buffer_ptr.contents crashing when size == 0 hdr_array = np.empty(0, dtype=np.uint8) hdr_array.flags['WRITEABLE'] = False return hdr_array hdr_buffer = _address_as_buffer(self._header_ptr, size, readonly=True) hdr_array = np.frombuffer(hdr_buffer, dtype=np.uint8) hdr_array.flags['WRITEABLE'] = False return hdr_array
def header(self): if self._header is not None: return self._header size = self.header_size if size == 0: # WAR for hdr_buffer_ptr.contents crashing when size == 0 hdr_array = np.empty(0, dtype=np.uint8) hdr_array.flags['WRITEABLE'] = False return json.loads(hdr_array.tobytes()) hdr_buffer = _address_as_buffer(self._header_ptr, size, readonly=True) hdr_array = np.frombuffer(hdr_buffer, dtype=np.uint8) hdr_array.flags['WRITEABLE'] = False self._header = json.loads(hdr_array.tobytes()) return self._header