#include <swcdb/ranger/db/CellStoreBlock.h>
Public Types | |
enum | State : uint8_t { NONE, LOADING, LOADED } |
typedef Read * | Ptr |
Public Member Functions | |
Read (Header &&header) noexcept | |
void | init (CellStore::Read *cellstore) noexcept |
Read (const Read &)=delete | |
Read (const Read &&)=delete | |
Read & | operator= (const Read &)=delete |
~Read () noexcept | |
bool | load (BlockLoader *loader) |
void | load () |
void | load_cells (int &err, Ranger::Block::Ptr cells_block) |
void | processing_decrement () noexcept |
size_t | release () |
bool | processing () noexcept |
bool | loaded () const noexcept |
bool | loaded (int &err) noexcept |
size_t | size_bytes (bool only_loaded=false) const noexcept |
size_t | size_bytes_enc (bool only_loaded=false) const noexcept |
void | print (std::ostream &out) |
Static Public Member Functions | |
static const char *SWC_CONST_FUNC | to_string (const State state) noexcept |
static void | load_header (int &err, FS::SmartFd::Ptr &smartfd, Header &header) |
Public Attributes | |
const Header | header |
CellStore::Read * | cellstore |
Private Member Functions | |
void | load_open (int err) |
void | load_read (int err, StaticBuffer &&buffer) |
void | load_finish (int err) |
Private Attributes | |
Core::MutexSptd | m_mutex |
Core::Atomic< State > | m_state |
int | m_err |
Core::Atomic< uint32_t > | m_cells_remain |
Core::Atomic< size_t > | m_processing |
StaticBuffer | m_buffer |
std::queue< BlockLoader * > | m_queue |
Definition at line 28 of file CellStoreBlock.h.
Definition at line 30 of file CellStoreBlock.h.
enum SWC::Ranger::CellStore::Block::Read::State : uint8_t |
Enumerator | |
---|---|
NONE | |
LOADING | |
LOADED |
Definition at line 32 of file CellStoreBlock.h.
|
explicitnoexcept |
Definition at line 79 of file CellStoreBlock.cc.
|
delete |
|
delete |
|
noexcept |
Definition at line 92 of file CellStoreBlock.cc.
References header, SWC::System::Resources::less_mem_releasable(), m_state, SWC::Env::Rgr::res(), and SWC::Ranger::CellStore::Block::Header::size_plain.
|
noexcept |
Definition at line 88 of file CellStoreBlock.cc.
SWC_CAN_INLINE void SWC::Ranger::CellStore::Block::Read::load | ( | ) |
Definition at line 129 of file CellStoreBlock.cc.
References load_open(), SWC::Error::OK, SWC::Env::Rgr::post(), and SWC_CAN_INLINE.
SWC_CAN_INLINE bool SWC::Ranger::CellStore::Block::Read::load | ( | BlockLoader * | loader | ) |
Definition at line 105 of file CellStoreBlock.cc.
References SWC::Core::AtomicBase< T, OrderT >::compare_exchange_weak(), SWC::Core::Atomic< T, OrderT >::fetch_add(), header, SWC::Ranger::BlockLoader::loaded(), SWC::DB::Types::MngrColumn::LOADING, m_mutex, m_processing, m_queue, m_state, SWC::System::Resources::more_mem_future(), SWC::System::Resources::more_mem_releasable(), SWC::Condition::NONE, SWC::Env::Rgr::res(), and SWC::Ranger::CellStore::Block::Header::size_plain.
Referenced by SWC::Ranger::CellStore::Read::_run_queued().
SWC_CAN_INLINE void SWC::Ranger::CellStore::Block::Read::load_cells | ( | int & | err, |
Ranger::Block::Ptr | cells_block | ||
) |
Definition at line 140 of file CellStoreBlock.cc.
References SWC::Core::Buffer< T >::base, SWC::Ranger::CellStore::Read::cell_revs, SWC::Ranger::CellStore::Block::Header::cells_count, cellstore, SWC::Core::Atomic< T, OrderT >::fetch_sub(), header, SWC::Ranger::Block::load_cells(), m_buffer, m_cells_remain, m_processing, SWC::System::Resources::need_ram(), release(), SWC::Env::Rgr::res(), SWC::Core::Buffer< T >::size, SWC::Ranger::CellStore::Block::Header::size_plain, and SWC::Core::Atomic< T, OrderT >::sub_rslt().
|
private |
Definition at line 320 of file CellStoreBlock.cc.
References SWC::Ranger::CellStore::Read::_run_queued(), cellstore, SWC::Core::Buffer< T >::free(), SWC::Error::FS_PATH_NOT_FOUND, header, SWC::System::Resources::less_mem_future(), SWC::System::Resources::less_mem_releasable(), SWC::LOG_ERROR, m_buffer, m_err, m_mutex, m_queue, m_state, SWC::Condition::NONE, SWC::Error::OK, SWC::Env::Rgr::post(), print(), SWC::Error::print(), SWC::Env::Rgr::res(), SWC::Ranger::CellStore::Block::Header::size_plain, SWC::Ranger::CellStore::Read::smartfd, SWC::Core::AtomicBase< T, OrderT >::store(), SWC_CAN_INLINE, SWC_LOG_OSTREAM, and SWC_LOG_OUT.
Referenced by load_open(), and load_read().
|
static |
Definition at line 38 of file CellStoreBlock.cc.
References SWC::Core::checksum_i32_chk(), SWC::Error::CHECKSUM_MISMATCH, SWC::Ranger::CellStore::Block::Header::decode(), SWC::Serialization::decode_i32(), SWC::Env::FsInterface::fs(), SWC::Error::FS_EOF, header, SWC::Env::FsInterface::interface(), SWC::LOG_WARN, SWC::Ranger::CellStore::Block::Header::offset_data, SWC::Error::OK, SWC::Error::print(), SWC::Ranger::CellStore::Block::Header::SIZE, SWC_LOG_OSTREAM, and SWC_LOG_OUT.
|
private |
Definition at line 235 of file CellStoreBlock.cc.
References cellstore, SWC::Env::FsInterface::fs(), SWC::Error::FS_PATH_NOT_FOUND, header, SWC::Env::FsInterface::interface(), load_finish(), load_read(), SWC::LOG_WARN, SWC::Ranger::CellStore::Block::Header::offset_data, SWC::Error::OK, operator=(), SWC::Env::Rgr::post(), print(), SWC::Error::print(), SWC::Error::SERVER_SHUTTING_DOWN, SWC::Ranger::CellStore::Block::Header::size_enc, SWC::Ranger::CellStore::Read::smartfd, SWC_CAN_INLINE, SWC_LOG_OSTREAM, and SWC_LOG_OUT.
Referenced by load(), and load_read().
|
private |
Definition at line 292 of file CellStoreBlock.cc.
References SWC::Core::Buffer< T >::base, SWC::Ranger::CellStore::Block::Header::checksum_data, SWC::Core::checksum_i32_chk(), SWC::Error::CHECKSUM_MISMATCH, SWC::Core::Encoder::decode(), SWC::Ranger::CellStore::Block::Header::encoder, SWC::Error::FS_EOF, header, load_finish(), load_open(), m_buffer, SWC::Error::OK, SWC::Core::Buffer< T >::set(), SWC::Ranger::CellStore::Block::Header::size_enc, and SWC::Ranger::CellStore::Block::Header::size_plain.
Referenced by load_open().
|
noexcept |
Definition at line 201 of file CellStoreBlock.cc.
References m_state.
Referenced by release().
|
noexcept |
Definition at line 206 of file CellStoreBlock.cc.
void SWC::Ranger::CellStore::Block::Read::print | ( | std::ostream & | out | ) |
Definition at line 221 of file CellStoreBlock.cc.
References header, SWC::Core::AtomicBase< T, OrderT >::load(), m_err, m_mutex, m_processing, m_queue, m_state, SWC::Ranger::CellStore::Block::Header::print(), SWC::Error::print(), and to_string().
Referenced by load_finish(), and load_open().
|
noexcept |
Definition at line 185 of file CellStoreBlock.cc.
References SWC::DB::Types::MngrColumn::LOADING, m_mutex, m_processing, m_queue, m_state, SWC::Core::MutexSptd::try_full_lock(), and SWC::Core::MutexSptd::unlock().
|
noexcept |
Definition at line 160 of file CellStoreBlock.cc.
References SWC::Core::Atomic< T, OrderT >::fetch_sub(), and m_processing.
SWC_CAN_INLINE size_t SWC::Ranger::CellStore::Block::Read::release | ( | ) |
Definition at line 165 of file CellStoreBlock.cc.
References SWC::Ranger::CellStore::Block::Header::cells_count, SWC::Core::AtomicBase< T, OrderT >::compare_exchange_weak(), SWC::Core::Buffer< T >::free(), header, SWC::System::Resources::less_mem_releasable(), loaded(), m_buffer, m_cells_remain, m_mutex, m_processing, m_queue, m_state, SWC::Condition::NONE, SWC::Env::Rgr::res(), SWC::Ranger::CellStore::Block::Header::size_plain, SWC::Core::AtomicBase< T, OrderT >::store(), SWC::Core::MutexSptd::try_full_lock(), and SWC::Core::MutexSptd::unlock().
Referenced by load_cells().
|
noexcept |
Definition at line 212 of file CellStoreBlock.cc.
|
noexcept |
Definition at line 217 of file CellStoreBlock.cc.
|
staticnoexcept |
Definition at line 14 of file CellStoreBlock.cc.
References SWC::DB::Types::MngrColumn::LOADING.
Referenced by print().
CellStore::Read* SWC::Ranger::CellStore::Block::Read::cellstore |
Definition at line 50 of file CellStoreBlock.h.
Referenced by load_cells(), load_finish(), and load_open().
const Header SWC::Ranger::CellStore::Block::Read::header |
Definition at line 49 of file CellStoreBlock.h.
Referenced by load(), load_cells(), load_finish(), load_header(), load_open(), load_read(), print(), release(), and ~Read().
|
private |
Definition at line 102 of file CellStoreBlock.h.
Referenced by load_cells(), load_finish(), load_read(), and release().
|
private |
Definition at line 100 of file CellStoreBlock.h.
Referenced by load_cells(), and release().
|
private |
Definition at line 99 of file CellStoreBlock.h.
Referenced by load_finish(), and print().
|
private |
Definition at line 97 of file CellStoreBlock.h.
Referenced by load(), load_finish(), print(), processing(), and release().
|
private |
Definition at line 101 of file CellStoreBlock.h.
Referenced by load(), load_cells(), print(), processing(), processing_decrement(), and release().
|
private |
Definition at line 103 of file CellStoreBlock.h.
Referenced by load(), load_finish(), print(), processing(), and release().
|
private |
Definition at line 98 of file CellStoreBlock.h.
Referenced by load(), load_finish(), loaded(), print(), processing(), release(), and ~Read().