SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RangeUnload.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 
9 
10 namespace SWC { namespace Comm { namespace Protocol {
11 namespace Rgr { namespace Req {
12 
13 
16  const Manager::Column::Ptr& a_col,
17  const Manager::Range::Ptr& a_range,
18  bool a_ignore_error,
19  uint32_t timeout)
20  : client::ConnQueue::ReqBase(
21  Buffers::make(
22  Params::RangeUnload(a_range->cfg->cid, a_range->rid),
23  0,
24  RANGE_UNLOAD, timeout
25  )
26  ),
27  rgr(a_rgr), col(a_col), range(a_range),
28  ignore_error(a_ignore_error) {
29 }
30 
32  return col->state() != DB::Types::MngrColumn::State::DELETED &&
33  !range->deleted() &&
35 }
36 
39 }
40 
42  if(!valid())
43  return;
44 
45  Params::RangeUnloadRsp rsp_params(ev->error);
46  if(!rsp_params.err) {
47  try {
48  const uint8_t *ptr = ev->data.base;
49  size_t remain = ev->data.size;
50  rsp_params.decode(&ptr, &remain);
51  } catch(...) {
54  rsp_params.err = e.code();
55  }
56  }
57  unloaded(rsp_params.err);
58 }
59 
60 
61 void RangeUnload::unloaded(int err) {
62  if(err) {
63  if(!ignore_error)
64  rgr->failures.fetch_add(1);
65  } else if(range->get_rgr_id() == rgr->rgrid) {
66  col->set_unloaded(range);
68  }
69 }
70 
71 
72 }}}}}
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
RangeUnload.h
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::Comm::Protocol::Rgr::Req::RangeUnload::handle_no_conn
void handle_no_conn() override
Definition: RangeUnload.cc:37
SWC::Comm::Protocol::Rgr::Req::RangeUnload::range
const Manager::Range::Ptr range
Definition: RangeUnload.h:39
SWC::Manager::Range::Ptr
std::shared_ptr< Range > Ptr
Definition: Range.h:24
SWC::Comm::Protocol::Rgr::Req::RangeUnload::handle
void handle(ConnHandlerPtr conn, const Event::Ptr &ev) override
Definition: RangeUnload.cc:41
SWC::Comm::Protocol::Rgr::Req::RangeUnload::col
const Manager::Column::Ptr col
Definition: RangeUnload.h:38
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC_CURRENT_EXCEPTION
#define SWC_CURRENT_EXCEPTION(_msg_)
Definition: Exception.h:119
SWC::Comm::Protocol::Rgr::Req::RangeUnload::valid
bool valid() override
Definition: RangeUnload.cc:31
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Rgr::Params::RangeUnloadRsp::err
int err
Definition: RangeUnload.h:79
SWC::Comm::Protocol::Rgr::RANGE_UNLOAD
@ RANGE_UNLOAD
Definition: Commands.h:32
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::Params::RangeUnloadRsp
Definition: RangeUnload.h:62
SWC::Error::COMM_NOT_CONNECTED
@ COMM_NOT_CONNECTED
Definition: Error.h:64
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
RangeUnload.h
SWC::Comm::Protocol::Rgr::Req::RangeUnload::rgr
const Manager::Ranger::Ptr rgr
Definition: RangeUnload.h:37
SWC::Manager::Rangers::assign_ranges
void assign_ranges()
Definition: Rangers.cc:544
SWC::Comm::Protocol::Rgr::Req::RangeUnload::RangeUnload
RangeUnload(const Manager::Ranger::Ptr &rgr, const Manager::Column::Ptr &col, const Manager::Range::Ptr &range, bool ignore_error=false, uint32_t timeout=60000)
Definition: RangeUnload.cc:15
SWC::Comm::Serializable::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: Serializable.h:59
SWC::DB::Types::MngrColumn::DELETED
@ DELETED
Definition: MngrColumnState.h:20
SWC::Comm::Protocol::Rgr::Req::RangeUnload::unloaded
void unloaded(int err)
Definition: RangeUnload.cc:61
SWC::Manager::Column::Ptr
std::shared_ptr< Column > Ptr
Definition: Column.h:24
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::Req::RangeUnload::ignore_error
bool ignore_error
Definition: RangeUnload.h:40
SWC::Error::Exception
Definition: Exception.h:21
SWC::Env::Mngr::rangers
static SWC_CAN_INLINE Manager::Rangers * rangers() noexcept
Definition: MngrEnv.h:69