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 
8 
9 namespace SWC { namespace Comm { namespace Protocol {
10 namespace Rgr { namespace Req {
11 
12 
15  const Manager::Column::Ptr& a_col,
16  const Manager::Range::Ptr& a_range,
17  const DB::Schema::Ptr& schema)
18  : client::ConnQueue::ReqBase(
19  Buffers::make(
20  Params::RangeLoad(schema, a_range->rid),
21  0,
22  RANGE_LOAD, 3600000
23  )
24  ),
25  rgr(a_rgr), col(a_col), range(a_range),
26  schema_revision(schema->revision) {
27  SWC_LOG_OUT(LOG_INFO, range->print(SWC_LOG_OSTREAM << "RANGE-LOAD "); );
28 }
29 
31  if(!valid())
32  return handle_no_conn();
33 
34  Params::RangeLoaded params(range->cfg->key_seq);
35  int err = ev->response_code();
36  if(!err) {
37  try {
38  const uint8_t *ptr = ev->data.base + 4;
39  size_t remain = ev->data.size - 4;
40  params.decode(&ptr, &remain);
41 
42  } catch(...) {
45  err = e.code();
46  }
47  }
48  loaded(err, false, params.interval, params.revision);
49 }
50 
52  return !range->deleted() &&
54 }
55 
58  DB::Cells::Interval(range->cfg->key_seq), 0);
59 }
60 
61 
62 void RangeLoad::loaded(int err, bool failure,
63  const DB::Cells::Interval& intval, int64_t revision) {
64  if(!err)
65  col->change_rgr_schema(rgr->rgrid, schema_revision);
66 
68  rgr, range, revision, err, failure, false);
69  col->sort(range, intval, revision);
70 
72  Error::print(SWC_LOG_OSTREAM << "RANGE-STATUS ", err);
73  range->print(SWC_LOG_OSTREAM << ", ");
74  );
75 }
76 
77 
78 }}}}}
RangeLoad.h
SWC::Error::Exception::code
constexpr SWC_CAN_INLINE int code() const noexcept
Definition: Exception.h:51
SWC::Comm::Protocol::Rgr::Params::RangeLoaded::interval
DB::Cells::Interval interval
Definition: RangeLoad.h:66
SWC_LOG_OSTREAM
#define SWC_LOG_OSTREAM
Definition: Logger.h:44
SWC::Comm::Protocol::Rgr::Req::RangeLoad::schema_revision
int64_t schema_revision
Definition: RangeLoad.h:43
SWC::DB::Schema::Ptr
std::shared_ptr< Schema > Ptr
Definition: Schema.h:185
SWC_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC::Comm::Protocol::Rgr::Req::RangeLoad::rgr
Manager::Ranger::Ptr rgr
Definition: RangeLoad.h:40
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::LOG_INFO
@ LOG_INFO
Definition: Logger.h:35
SWC::Comm::Protocol::Rgr::Req::RangeLoad::col
Manager::Column::Ptr col
Definition: RangeLoad.h:41
SWC::Manager::Range::Ptr
std::shared_ptr< Range > Ptr
Definition: Range.h:24
SWC::Comm::Protocol::Rgr::Req::RangeLoad::valid
bool valid() override
Definition: RangeLoad.cc:51
SWC::Manager::Rangers::range_loaded
void range_loaded(Ranger::Ptr rgr, Range::Ptr range, int64_t revision, int err, bool failure=false, bool verbose=true)
Definition: Rangers.cc:403
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC_CURRENT_EXCEPTION
#define SWC_CURRENT_EXCEPTION(_msg_)
Definition: Exception.h:119
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
RangeLoad.h
SWC::Comm::Protocol::Rgr::Req::RangeLoad
Definition: RangeLoad.h:13
SWC::Comm::Protocol::Rgr::Req::RangeLoad::range
Manager::Range::Ptr range
Definition: RangeLoad.h:42
SWC::Manager::Ranger::Ptr
std::shared_ptr< Ranger > Ptr
Definition: Ranger.h:21
SWC::Comm::Buffers
Definition: Buffers.h:20
SWC::LOG_ERROR
@ LOG_ERROR
Definition: Logger.h:32
SWC::Manager::Rangers::running
SWC_CAN_INLINE bool running() const noexcept
Definition: Rangers.h:40
SWC::Comm::Protocol::Rgr::Req::RangeLoad::handle_no_conn
void handle_no_conn() override
Definition: RangeLoad.cc:56
SWC::Error::COMM_NOT_CONNECTED
@ COMM_NOT_CONNECTED
Definition: Error.h:64
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::Protocol::Rgr::Req::RangeLoad::RangeLoad
RangeLoad(const Manager::Ranger::Ptr &rgr, const Manager::Column::Ptr &col, const Manager::Range::Ptr &range, const DB::Schema::Ptr &schema)
Definition: RangeLoad.cc:14
SWC::Comm::Serializable::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: Serializable.h:59
SWC::Manager::Column::Ptr
std::shared_ptr< Column > Ptr
Definition: Column.h:24
SWC::Comm::Protocol::Rgr::Req::RangeLoad::handle
void handle(ConnHandlerPtr conn, const Event::Ptr &ev) override
Definition: RangeLoad.cc:30
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::Rgr::Req::RangeLoad::loaded
void loaded(int err, bool failure, const DB::Cells::Interval &intval, int64_t revision)
Definition: RangeLoad.cc:62
SWC::Comm::Protocol::Rgr::RANGE_LOAD
@ RANGE_LOAD
Definition: Commands.h:31
SWC::DB::Cells::Interval
Definition: Interval.h:17
SWC::Comm::Protocol::Rgr::Params::RangeLoaded::revision
int64_t revision
Definition: RangeLoad.h:67
SWC::Error::print
void print(std::ostream &out, int err)
Definition: Error.cc:191
SWC::Error::Exception
Definition: Exception.h:21
SWC::Env::Mngr::rangers
static SWC_CAN_INLINE Manager::Rangers * rangers() noexcept
Definition: MngrEnv.h:69
SWC::Comm::Protocol::Rgr::Params::RangeLoaded
Definition: RangeLoad.h:54