SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnsUnload.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 
10 
11 namespace SWC { namespace Comm { namespace Protocol {
12 namespace Rgr { namespace Req {
13 
14 
17  cid_t cid_begin, cid_t cid_end)
18  : client::ConnQueue::ReqBase(
19  Buffers::make(
20  Params::ColumnsUnloadReq(cid_begin, cid_end),
21  0,
22  COLUMNS_UNLOAD, 60000
23  )
24  ),
25  rgr(a_rgr) {
26 }
27 
29  // handler accepts Partial Response Bit
30  Params::ColumnsUnloadRsp rsp_params;
31  int err = ev->error;
32  if(!err) {
33  try {
34  const uint8_t *ptr = ev->data.base;
35  size_t remain = ev->data.size;
36  rsp_params.decode(&ptr, &remain);
37  err = rsp_params.err;
38 
39  } catch(...) {
42  err = e.code();
43  }
44  }
45 
46  if(err)
47  return handle_no_conn();
48 
49  if(rsp_params.columns.empty())
50  return;
51 
52  rgrid_t rgrid;
53  Manager::Ranger::Ptr assigned;
54  for(auto& c : rsp_params.columns) {
55  auto col = Env::Mngr::columns()->get_column(err = Error::OK, c.first);
56  if(err || !col)
57  continue;
58 
59  for(auto& r : c.second) {
60 
61  auto range = col->get_range(r);
62  if(!range || !range->assigned() || !(rgrid = range->get_rgr_id()))
63  continue;
64 
65  assigned = Env::Mngr::rangers()->rgr_get(rgrid);
66  if(!assigned || assigned->state != Manager::RangerState::ACK)
67  continue;
68 
69  assigned->put(RangeUnload::Ptr(new RangeUnload(assigned, col, range)));
70  }
71  }
72 }
73 
75  rgr->failures.fetch_add(1);
76 }
77 
78 
79 }}}}}
SWC::Comm::Protocol::Rgr::Req::ColumnsUnload::handle_no_conn
void handle_no_conn() override
Definition: ColumnsUnload.cc:74
SWC::Error::Exception::code
constexpr SWC_CAN_INLINE int code() const noexcept
Definition: Exception.h:51
SWC_LOG_OSTREAM
#define SWC_LOG_OSTREAM
Definition: Logger.h:44
SWC_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::Env::Mngr::columns
static SWC_CAN_INLINE Manager::Columns * columns() noexcept
Definition: MngrEnv.h:59
SWC::DB::Types::MngrRangerState::ACK
const uint8_t ACK
Definition: MngrRangerState.h:18
SWC::Comm::Protocol::Rgr::COLUMNS_UNLOAD
@ COLUMNS_UNLOAD
Definition: Commands.h:37
SWC::Error::OK
@ OK
Definition: Error.h:45
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
ColumnsUnload.h
SWC::Manager::Ranger::Ptr
std::shared_ptr< Ranger > Ptr
Definition: Ranger.h:21
SWC::rgrid_t
uint64_t rgrid_t
Definition: Identifiers.h:18
SWC::Comm::Buffers
Definition: Buffers.h:20
SWC::Manager::Rangers::rgr_get
Ranger::Ptr rgr_get(const rgrid_t rgrid)
Definition: Rangers.cc:164
SWC::LOG_ERROR
@ LOG_ERROR
Definition: Logger.h:32
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
RangeUnload.h
SWC::Manager::Columns::get_column
Column::Ptr get_column(int &err, const cid_t cid)
Definition: Columns.h:71
SWC::Comm::Protocol::Rgr::Req::ColumnsUnload::ColumnsUnload
ColumnsUnload(const Manager::Ranger::Ptr &rgr, cid_t cid_begin, cid_t cid_end)
Definition: ColumnsUnload.cc:16
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::err
int err
Definition: ColumnsUnload.h:62
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::columns
std::unordered_map< cid_t, rids_t > columns
Definition: ColumnsUnload.h:63
SWC::Comm::Serializable::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: Serializable.h:59
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::Rgr::Req::RangeUnload
Definition: RangeUnload.h:15
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp
Definition: ColumnsUnload.h:53
SWC::Comm::Protocol::Rgr::Req::RangeUnload::Ptr
std::shared_ptr< RangeUnload > Ptr
Definition: RangeUnload.h:17
SWC::Comm::Protocol::Rgr::Req::ColumnsUnload::rgr
const Manager::Ranger::Ptr rgr
Definition: ColumnsUnload.h:29
SWC::Comm::Protocol::Rgr::Req::ColumnsUnload::handle
void handle(ConnHandlerPtr conn, const Event::Ptr &ev) override
Definition: ColumnsUnload.cc:28
ColumnsUnload.h
SWC::Error::Exception
Definition: Exception.h:21
SWC::Env::Mngr::rangers
static SWC_CAN_INLINE Manager::Rangers * rangers() noexcept
Definition: MngrEnv.h:69