|
SWC-DB
v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
|
Go to the documentation of this file.
10 namespace SWC {
namespace Ranger {
namespace CellStore {
namespace Block {
51 fs_if->close(err, smartfd);
55 if(!smartfd->valid() && !fs_if->open(err, smartfd) && err)
61 const uint8_t *ptr = buf;
80 : header(std::move(a_header)), cellstore(
nullptr),
82 m_state(header.size_plain ?
State::NONE : State::LOADED),
83 m_err(
Error::OK), m_cells_remain(header.cells_count),
84 m_processing(0), m_buffer(), m_queue() {
89 cellstore = _cellstore;
111 if(at != State::LOADED)
133 Task(
Read* a_ptr) noexcept : ptr(a_ptr) { }
141 bool was_splitted =
false;
170 State at = State::LOADED;
202 return m_state == State::LOADED;
208 return !(err = m_err) && loaded();
213 return only_loaded && !loaded() ? 0 : header.size_plain;
218 return only_loaded && !loaded() ? 0 : header.size_enc;
228 out <<
" queue=" <<
m_queue.size();
268 noexcept : ptr(a_ptr), error(a_error),
269 buffer(std::move(a_buffer)) {
272 Task(Task&& other) noexcept
273 : ptr(other.ptr), error(other.error),
274 buffer(std::move(other.buffer)) {
276 Task(
const Task&) =
delete;
280 void operator()() { ptr->
load_read(error, std::move(buffer)); }
345 Task(
Read* a_ptr) noexcept : ptr(a_ptr) { }
358 loader->loaded(
this);
385 uint8_t* ptr = output.
base;
Write(Header &&header) noexcept
constexpr SWC_CAN_INLINE bool compare_exchange_weak(T &at, T value) noexcept
static SWC_CAN_INLINE System::Resources & res() noexcept
void load_cells(int &err, Ranger::Block::Ptr cells_block)
static void encode(int &err, DynamicBuffer &cells, DynamicBuffer &output, Header &header)
size_t load_cells(const uint8_t *buf, size_t remain, uint32_t revs, size_t avail, bool &was_splitted, bool synced=false)
#define SWC_LOG_OUT(pr, _code_)
Core::Atomic< State > m_state
static SWC_CAN_INLINE FS::Interface::Ptr & interface() noexcept
SWC_CAN_INLINE void more_mem_future(size_t sz) noexcept
void load_finish(int err)
SWC_CAN_INLINE bool checksum_i32_chk(uint32_t checksum, const uint8_t *base, uint32_t len)
Read & operator=(const Read &)=delete
void loaded(CellStore::Block::Read::Ptr &&blk)
Core::Atomic< uint32_t > m_cells_remain
SWC_CAN_INLINE void unlock(const bool &support) noexcept
void processing_decrement() noexcept
constexpr SWC_CAN_INLINE T sub_rslt(T v) noexcept
void print(std::ostream &out) const
size_t size_bytes_enc(bool only_loaded=false) const noexcept
size_t size_bytes(bool only_loaded=false) const noexcept
constexpr SWC_CAN_INLINE void store(T v) noexcept
SWC_CAN_INLINE void more_mem_releasable(size_t sz) noexcept
SWC_CAN_INLINE void less_mem_releasable(size_t sz) noexcept
void decode(int &err, Type encoder, const uint8_t *src, size_t sz_enc, uint8_t *dst, size_t sz)
Read(Header &&header) noexcept
void init(CellStore::Read *cellstore) noexcept
The SWC-DB C++ namespace 'SWC'.
SWC_CAN_INLINE size_t need_ram() const noexcept
static SWC_CAN_INLINE FS::FileSystem::Ptr & fs() noexcept
std::queue< BlockLoader * > m_queue
static void load_header(int &err, FS::SmartFd::Ptr &smartfd, Header &header)
Core::Atomic< size_t > m_processing
bool loaded() const noexcept
SWC_CAN_INLINE void less_mem_future(size_t sz) noexcept
SWC_CAN_INLINE void free() noexcept
constexpr SWC_CAN_INLINE size_t fill() const noexcept
std::shared_ptr< SmartFd > Ptr
constexpr SWC_CAN_INLINE T load() const noexcept
void encode(int &err, Type encoder, const uint8_t *src, size_t src_sz, size_t *sz_enc, DynamicBuffer &output, uint32_t reserve, bool no_plain_out=false, bool ok_more=false)
void print(std::ostream &out)
void load_read(int err, StaticBuffer &&buffer)
static SWC_CAN_INLINE void post(T_Handler &&handler)
constexpr SWC_CAN_INLINE T fetch_sub(T v) noexcept
bool processing() noexcept
void print(std::ostream &out, int err)
constexpr SWC_CAN_INLINE T fetch_add(T v) noexcept
static const char *SWC_CONST_FUNC to_string(const State state) noexcept
bool try_full_lock(bool &support) noexcept
SWC_CAN_INLINE uint32_t decode_i32(const uint8_t **bufp, size_t *remainp)
CellStore::Read * cellstore
void set(value_type *data, size_t len, bool take_ownership) noexcept