|
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.
7 #ifndef swcdb_manager_db_Columns_h
8 #define swcdb_manager_db_Columns_h
20 namespace SWC {
namespace Manager {
24 class Columns final :
private std::unordered_map<cid_t, Column::Ptr> {
50 for(
auto it = cbegin(); !err && it != cend(); ++it)
51 it->second->state(err);
58 auto res = emplace(schema->cid,
nullptr);
61 res.first->second.reset(
new Column(schema));
62 col = res.first->second;
81 #define _PRELOAD(_GROUP, _BEGIN, _END) \
82 if(Range::Ptr range = m_need_assign[_GROUP].get()) \
84 for(cid_t cid = _BEGIN; cid <= _END; ++cid) { \
85 Core::MutexSptd::scope lock(m_mutex); \
86 auto it = find(cid); \
88 if((waiting_meta = it->second->_state() != Column::State::OK)) \
113 for(
auto it = cbegin(); it != cend(); ++it)
114 it->second->set_rgr_unassigned(rgrid);
119 for(
auto it = cbegin(); it != cend(); ++it)
120 it->second->change_rgr(rgrid_old, rgrid);
129 if((it = find(chk->cfg->cid)) == cend())
139 chk->assigned(rgrid, num, ranges);
146 it != cend(); ++it) {
147 if(it->second->need_health_check(ts, ms)) {
180 out <<
"ColumnsAssignment:";
182 for(
auto it = cbegin(); it != cend(); ++it)
183 it->second->print(out <<
"\n ");
188 class AssignGroup final :
private std::unordered_set<Range::Ptr> {
203 return empty() ? nullptr : *cbegin();
209 insert(std::move(range));
227 for(
auto it = cbegin();
229 (*it)->cfg->cid == cid ? (it = erase(it)) : ++it
266 #endif // swcdb_manager_db_Columns_h
static void columns_by_fs(int &err, FS::IdEntries_t &entries)
SWC_CAN_INLINE void reset()
static constexpr const cid_t NO_CID
static const char * get_column_path() noexcept
std::shared_ptr< Schema > Ptr
AssignGroup & operator=(AssignGroup &&)=delete
static SWC_CAN_INLINE FS::Interface::Ptr & interface() noexcept
void remove(const cid_t cid)
void assign_remove(const Range::Ptr &range)
std::shared_ptr< Range > Ptr
void print(std::ostream &out)
void assign_add(const Range::Ptr &range)
SWC_CAN_INLINE void remove(const Range::Ptr &range)
AssignGroup(const AssignGroup &)=delete
void assigned(rgrid_t rgrid, size_t num, Core::Vector< Range::Ptr > &ranges)
The SWC-DB C++ namespace 'SWC'.
bool is_an_initialization(int &err, const DB::Schema::Ptr &schema)
void set_rgr_unassigned(rgrid_t rgrid)
void assign_add(Range::Ptr &&range)
SWC_CAN_INLINE void add(Range::Ptr &&range)
const cid_t CID_MASTER_END
void change_rgr(rgrid_t rgrid_old, rgrid_t rgrid)
SWC_CAN_INLINE Range::Ptr get()
SWC_CAN_INLINE void add(const Range::Ptr &range)
const cid_t CID_META_BEGIN
Column::Ptr get_column(int &err, const cid_t cid)
const cid_t CID_MASTER_BEGIN
Column::Ptr get_need_health_check(int64_t ts, uint32_t ms)
AssignGroup m_need_assign[4]
std::shared_ptr< Column > Ptr
SWC_CAN_INLINE void remove(const cid_t cid)
#define _PRELOAD(_GROUP, _BEGIN, _END)
AssignGroup & operator=(const AssignGroup &)=delete
Range::Ptr get_next_unassigned(bool &waiting_meta)
AssignGroup(AssignGroup &&)=delete
AssignGroup & assign_group(const cid_t cid) noexcept