SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RangeLoad.cc
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 
8 
9 namespace SWC { namespace Ranger { namespace Callback {
10 
11 
14  const Comm::Event::Ptr& ev,
15  const cid_t a_cid, const rid_t a_rid) noexcept
17  cid(a_cid), rid(a_rid), col(nullptr) {
18 }
19 
20 void RangeLoad::loaded(int& err) {
21  if(!err && (Env::Rgr::is_shuttingdown() ||
25 
26  RangePtr range;
27  if(!err) {
28  range = Env::Rgr::columns()->get_range(err, cid, rid);
29  if(err || !range || !range->is_loaded())
31  }
32 
33  if(err) {
36  << "BAD LOAD RANGE, Unloading(" << cid << '/' << rid << ") ", err);
37  );
38  col->internal_unload(rid);
40 
41  m_conn->send_error(err, "", m_ev);
42 
43  } else {
45  range->cfg->key_seq, range->get_load_revision());
46  if((params.intval = range->cfg->range_type == DB::Types::Range::MASTER))
47  range->get_interval(params.interval);
48 
49  auto cbp = Comm::Buffers::make(m_ev, params, 4);
50  cbp->append_i32(err);
51  m_conn->send_response(cbp);
52  }
53 
54  col->run_mng_queue();
55 }
56 
57 
58 }}}
RangeLoad.h
SWC::Ranger::Callback::RangeLoad::cid
const cid_t cid
Definition: RangeLoad.h:18
SWC::Error::RGR_NOT_LOADED_RANGE
@ RGR_NOT_LOADED_RANGE
Definition: Error.h:91
SWC::Comm::Protocol::Rgr::Params::RangeLoaded::interval
DB::Cells::Interval interval
Definition: RangeLoad.h:66
SWC::Ranger::Columns::get_range
RangePtr get_range(int &err, const cid_t cid, const rid_t rid)
Definition: Columns.cc:21
SWC_LOG_OSTREAM
#define SWC_LOG_OSTREAM
Definition: Logger.h:44
SWC::Error::SERVER_SHUTTING_DOWN
@ SERVER_SHUTTING_DOWN
Definition: Error.h:84
SWC_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC::Ranger::Callback::ManageBase
Definition: ManageBase.h:20
SWC::Comm::ResponseCallback::m_ev
Event::Ptr m_ev
Definition: ResponseCallback.h:42
SWC::DB::Types::SystemColumn::is_data
constexpr SWC_CAN_INLINE bool is_data(cid_t cid) noexcept
Definition: SystemColumn.h:46
SWC::Env::Rgr::columns
static SWC_CAN_INLINE Ranger::Columns * columns() noexcept
Definition: RangerEnv.h:144
SWC::Ranger::Callback::ManageBase::RANGE_LOAD
@ RANGE_LOAD
Definition: ManageBase.h:26
SWC::Comm::ResponseCallback::m_conn
ConnHandlerPtr m_conn
Definition: ResponseCallback.h:41
SWC::Ranger::Callback::RangeLoad::RangeLoad
RangeLoad(const Comm::ConnHandlerPtr &conn, const Comm::Event::Ptr &ev, const cid_t cid, const rid_t rid) noexcept
Definition: RangeLoad.cc:13
SWC::Ranger::Callback::RangeLoad::col
ColumnPtr col
Definition: RangeLoad.h:21
SWC::Ranger::Columns::erase_if_empty
void erase_if_empty(cid_t cid)
Definition: Columns.cc:159
SWC::Ranger::RangePtr
std::shared_ptr< Range > RangePtr
Definition: Columns.h:15
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Ranger::Callback::RangeLoad::loaded
void loaded(int &err)
Definition: RangeLoad.cc:20
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Ranger::Callback::RangeLoad::rid
const rid_t rid
Definition: RangeLoad.h:19
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::Protocol::Rgr::Params::RangeLoaded::intval
bool intval
Definition: RangeLoad.h:65
SWC::Comm::Buffers::make
static SWC_CAN_INLINE Ptr make(uint32_t reserve=0)
Definition: Buffers.h:27
SWC::Env::Rgr::is_shuttingdown
static SWC_CAN_INLINE bool is_shuttingdown() noexcept
Definition: RangerEnv.h:58
SWC::rid_t
uint64_t rid_t
Definition: Identifiers.h:17
SWC::Env::Rgr::is_not_accepting
static SWC_CAN_INLINE bool is_not_accepting() noexcept
Definition: RangerEnv.h:53
SWC::LOG_WARN
@ LOG_WARN
Definition: Logger.h:33
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Error::print
void print(std::ostream &out, int err)
Definition: Error.cc:191
SWC::Comm::Protocol::Rgr::Params::RangeLoaded
Definition: RangeLoad.h:54