SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RangeIsLoaded.h
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 #ifndef swcdb_manager_Protocol_rgr_req_RangeIsLoaded_h
7 #define swcdb_manager_Protocol_rgr_req_RangeIsLoaded_h
8 
10 
11 
12 namespace SWC { namespace Comm { namespace Protocol {
13 namespace Rgr { namespace Req {
14 
15 
17  public:
18  typedef std::shared_ptr<RangeIsLoaded> Ptr;
19 
22 
25  const Manager::Range::Ptr& a_range, uint32_t timeout=60000)
26  : client::ConnQueue::ReqBase(
27  Buffers::make(
28  Params::RangeIsLoadedReq(
29  a_range->cfg->cid, a_range->rid
30  ),
31  0,
32  RANGE_IS_LOADED, timeout
33  )
34  ),
35  checker(a_checker), range(a_range) {
36  }
37 
38  virtual ~RangeIsLoaded() noexcept { }
39 
40  bool valid() override {
41  return checker->rgr->state == DB::Types::MngrRangerState::ACK &&
42  range->assigned() &&
44  }
45 
46  void handle_no_conn() override {
48  }
49 
50  void handle(ConnHandlerPtr, const Event::Ptr& ev) override {
51  Params::RangeIsLoadedRsp rsp_params(ev->error);
52  if(!rsp_params.err) {
53  try {
54  const uint8_t *ptr = ev->data.base;
55  size_t remain = ev->data.size;
56  rsp_params.decode(&ptr, &remain);
57  } catch(...) {
60  rsp_params.err = e.code();
61  }
62  }
63  checker->handle(range, rsp_params.err, rsp_params.flags);
64  }
65 
66 };
67 
68 }}}}}
69 
70 #endif // swcdb_manager_Protocol_rgr_req_RangeIsLoaded_h
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::Comm::Protocol::Rgr::Req::RangeIsLoaded::checker
const Manager::ColumnHealthCheck::RangerCheck::Ptr checker
Definition: RangeIsLoaded.h:20
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::~RangeIsLoaded
virtual ~RangeIsLoaded() noexcept
Definition: RangeIsLoaded.h:38
SWC::Comm::client::ConnQueueReqBase
Definition: ClientConnQueue.h:22
SWC::Comm::Protocol::Rgr::RANGE_IS_LOADED
@ RANGE_IS_LOADED
Definition: Commands.h:30
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::range
const Manager::Range::Ptr range
Definition: RangeIsLoaded.h:21
SWC::Manager::ColumnHealthCheck::RangerCheck::Ptr
std::shared_ptr< RangerCheck > Ptr
Definition: ColumnHealthCheck.h:34
SWC::Manager::Range::Ptr
std::shared_ptr< Range > Ptr
Definition: Range.h:24
RangeIsLoaded.h
SWC::DB::Types::MngrRangerState::ACK
const uint8_t ACK
Definition: MngrRangerState.h:18
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::Protocol::Rgr::Params::RangeIsLoadedRsp::flags
uint8_t flags
Definition: RangeIsLoaded.h:73
SWC_CURRENT_EXCEPTION
#define SWC_CURRENT_EXCEPTION(_msg_)
Definition: Exception.h:119
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::RangeIsLoaded
SWC_CAN_INLINE RangeIsLoaded(const Manager::ColumnHealthCheck::RangerCheck::Ptr &a_checker, const Manager::Range::Ptr &a_range, uint32_t timeout=60000)
Definition: RangeIsLoaded.h:24
SWC::Error::COMM_CONNECT_ERROR
@ COMM_CONNECT_ERROR
Definition: Error.h:65
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::RangeIsLoadedRsp
Definition: RangeIsLoaded.h:52
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::valid
bool valid() override
Definition: RangeIsLoaded.h:40
SWC::Comm::Protocol::Rgr::Params::RangeIsLoadedRsp::err
int err
Definition: RangeIsLoaded.h:72
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::handle
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
Definition: RangeIsLoaded.h:50
SWC::Comm::Serializable::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: Serializable.h:59
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::Ptr
std::shared_ptr< RangeIsLoaded > Ptr
Definition: RangeIsLoaded.h:18
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::handle_no_conn
void handle_no_conn() override
Definition: RangeIsLoaded.h:46
SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded
Definition: RangeIsLoaded.h:16
SWC::Error::Exception
Definition: Exception.h:21
SWC::Env::Mngr::rangers
static SWC_CAN_INLINE Manager::Rangers * rangers() noexcept
Definition: MngrEnv.h:69