def summarize_block(self, force=False): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() self._call('summarize_block', ctypes.c_bool(force), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)
def _get_data_by_id(self, object_id, ffi_fn_name): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec(ffi_fn_name, self.pointer, ctypes.c_char_p(object_id.encode()), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)
def finalize_block(self, consensus=None, force=False): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() self._call('finalize_block', consensus, len(consensus), ctypes.c_bool(force), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap).decode('utf-8')
def summarize_block(self): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec('block_publisher_summarize_block', self.pointer, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)
def forks(self, head): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result(pointer_type=_BlockPayload) head = ctypes.c_char_p(head.encode()) _libexec('chain_controller_forks', self.pointer, head, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) # Check if NULL if not vec_ptr: return None blocks = [] for i in range(vec_len.value): block_payload = vec_ptr[i] payload = ffi.from_rust_vec( block_payload.block_ptr, ctypes.c_size_t(block_payload.block_len), ctypes.c_size_t(block_payload.block_cap), ) block = Block() block.ParseFromString(payload) blocks.append(BlockWrapper(block)) LIBRARY.call("chain_controller_reclaim_block_payload_vec", vec_ptr, vec_len, vec_cap) return blocks
def finalize_block(self, consensus=None): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec('block_publisher_finalize_block', self.pointer, consensus, len(consensus), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap).decode('utf-8')
def _get_data_by_num(self, object_id, ffi_fn_name): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _pylibexec(ffi_fn_name, self.pointer, ctypes.c_ulonglong(object_id), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)
def get(self, address): c_address = ctypes.c_char_p(address.encode()) (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec('merkle_db_get', self.pointer, c_address, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return _decode(ffi.from_rust_vec(vec_ptr, vec_len, vec_cap))
def summarize_block(self, force=False): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() self._call( 'summarize_block', ctypes.c_bool(force), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)
def finalize_block(self, consensus=None, force=False): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() self._call( 'finalize_block', consensus, len(consensus), ctypes.c_bool(force), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return ffi.from_rust_vec(vec_ptr, vec_len, vec_cap).decode('utf-8')
def get(self, address): c_address = ctypes.c_char_p(address.encode()) (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec( 'merkle_db_get', self.pointer, c_address, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) return _decode(ffi.from_rust_vec( vec_ptr, vec_len, vec_cap))
def chain_head(self): """ Return the head block of the current chain. """ (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() try: _libexec('commit_store_get_chain_head', self.pointer, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) except ValueError: return None return self.deserialize_block( ffi.from_rust_vec(vec_ptr, vec_len, vec_cap))
def chain_head_fn(self): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec('chain_controller_chain_head', self.pointer, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) # Check if NULL if not vec_ptr: return None payload = ffi.from_rust_vec(vec_ptr, vec_len, vec_cap) block = Block() block.ParseFromString(payload) return block
def __next__(self): if not self._c_iter_ptr: raise StopIteration() (string_ptr, string_len, string_cap) = ffi.prepare_string_result() (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec('merkle_db_leaf_iterator_next', self._c_iter_ptr, ctypes.byref(string_ptr), ctypes.byref(string_len), ctypes.byref(string_cap), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) address = ffi.from_rust_string(string_ptr, string_len, string_cap).decode() value = _decode(ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)) return (address, value)
def __next__(self): if not self._c_iter_ptr: raise StopIteration() (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec("{}_next".format(self.name), self._c_iter_ptr, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) # Check if NULL if not vec_ptr: raise StopIteration() payload = ffi.from_rust_vec(vec_ptr, vec_len, vec_cap) block = Block() block.ParseFromString(payload) return block
def __next__(self): if not self._c_iter_ptr: raise StopIteration() (string_ptr, string_len, string_cap) = ffi.prepare_string_result() (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result() _libexec( 'merkle_db_leaf_iterator_next', self._c_iter_ptr, ctypes.byref(string_ptr), ctypes.byref(string_len), ctypes.byref(string_cap), ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) address = ffi.from_rust_string( string_ptr, string_len, string_cap).decode() value = _decode(ffi.from_rust_vec(vec_ptr, vec_len, vec_cap)) return (address, value)
def forks(self, head): (vec_ptr, vec_len, vec_cap) = ffi.prepare_vec_result( pointer_type=_BlockPayload) head = ctypes.c_char_p(head.encode()) _libexec( 'chain_controller_forks', self.pointer, head, ctypes.byref(vec_ptr), ctypes.byref(vec_len), ctypes.byref(vec_cap)) # Check if NULL if not vec_ptr: return None blocks = [] for i in range(vec_len.value): block_payload = vec_ptr[i] payload = ffi.from_rust_vec( block_payload.block_ptr, ctypes.c_size_t(block_payload.block_len), ctypes.c_size_t(block_payload.block_cap), ) block = Block() block.ParseFromString(payload) blocks.append(block) LIBRARY.call( "chain_controller_reclaim_block_payload_vec", vec_ptr, vec_len, vec_cap) return blocks