SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Scanner.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_db_client_Query_Select_Scanner_h
7 #define swcdb_db_client_Query_Select_Scanner_h
8 
9 
12 
16 
17 
18 namespace SWC { namespace client { namespace Query {
19 
21 namespace Select {
22 
23 
24 
25 class Scanner final : public std::enable_shared_from_this<Scanner> {
26  public:
27 
29  static void execute(const Handlers::Base::Ptr& hdlr,
30  DB::Types::KeySeq key_seq, cid_t cid,
31  const DB::Specs::Interval& intval) {
32  Ptr(new Scanner(
33  hdlr, key_seq, intval, cid))->mngr_locate_master();
34  }
35 
37  static void execute(const Handlers::Base::Ptr& hdlr,
38  DB::Types::KeySeq key_seq, cid_t cid,
39  DB::Specs::Interval&& intval) {
40  Ptr(new Scanner(
41  hdlr, key_seq, std::move(intval), cid))->mngr_locate_master();
42  }
43 
44 
45  typedef std::shared_ptr<Scanner> Ptr;
47 
51 
53  const cid_t meta_cid;
54  const cid_t data_cid;
55 
59 
63 
65  bool meta_next;
66  uint8_t retry_point;
68 
72 
77 
81 
82  Scanner(const Handlers::Base::Ptr& hdlr,
85  const cid_t cid);
86 
87  Scanner(const Handlers::Base::Ptr& hdlr,
90  const cid_t cid) noexcept;
91 
92  ~Scanner() noexcept;
93 
95  bool valid() noexcept {
96  return selector->valid();
97  }
98 
100  Clients::Ptr& get_clients() noexcept {
101  return selector->clients;
102  }
103 
105  Profiling& get_profile() noexcept {
106  return selector->profile;
107  }
108 
109  void debug_res_cache(const char* msg, cid_t cid, rid_t rid,
110  const Comm::EndPoints& endpoints);
111 
112  void print(std::ostream& out);
113 
114  void response_if_last();
115 
116  void next_call();
117 
118 
119  void mngr_locate_master();
120 
121  bool mngr_located_master(
122  const ReqBase::Ptr& base,
124 
125 
126  void rgr_locate_master();
127 
128  void rgr_located_master(
129  const ReqBase::Ptr& base,
131 
132 
133  void mngr_resolve_rgr_meta();
134 
136  const ReqBase::Ptr& base,
138 
139 
140  void rgr_locate_meta();
141 
142  void rgr_located_meta(
143  const ReqBase::Ptr& base,
145 
146 
148 
150  const ReqBase::Ptr& base,
152 
153 
154  void rgr_select();
155 
156  void rgr_selected(
157  const ReqBase::Ptr& req,
159 
160 };
161 
162 
163 }}}}
164 
165 
166 
167 #ifdef SWC_IMPL_SOURCE
169 #endif
170 
171 
172 #endif // swcdb_db_client_Query_Select_Scanner_h
SWC::client::Query::Select::Scanner::master_cid
const cid_t master_cid
Definition: Scanner.h:52
SWC::client::Query::Select::Scanner::master_mngr_offset
DB::Cell::Key master_mngr_offset
Definition: Scanner.h:73
Base.h
SWC::client::Query::Select::Scanner::get_profile
SWC_CAN_INLINE Profiling & get_profile() noexcept
Definition: Scanner.h:105
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp
Definition: RgrGet.h:53
SWC::client::Query::Select::Scanner::interval
DB::Specs::Interval interval
Definition: Scanner.h:50
SWC::client::Query::Select::Scanner::master_rgr_offset
DB::Cell::Key master_rgr_offset
Definition: Scanner.h:74
SWC::client::Query::Select::Scanner::master_mngr_is_end
bool master_mngr_is_end
Definition: Scanner.h:61
SWC::client::Query::Select::Scanner::meta_offset
DB::Cell::Key meta_offset
Definition: Scanner.h:75
SWC::client::Query::Select::Scanner::mngr_resolve_rgr_select
void mngr_resolve_rgr_select()
Definition: Scanner.cc:698
SWC::client::Query::Select::Scanner::get_clients
SWC_CAN_INLINE Clients::Ptr & get_clients() noexcept
Definition: Scanner.h:100
SWC::client::Query::Select::Scanner::debug_res_cache
void debug_res_cache(const char *msg, cid_t cid, rid_t rid, const Comm::EndPoints &endpoints)
Definition: Scanner.cc:103
SWC::client::Query::Select::Scanner::master_rgr_endpoints
Comm::EndPoints master_rgr_endpoints
Definition: Scanner.h:78
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp
Definition: RangeLocate.h:59
SWC::client::Query::Select::Scanner::next_call
void next_call()
Definition: Scanner.cc:182
SWC::client::Query::Select::Scanner::meta_next
bool meta_next
Definition: Scanner.h:65
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
RgrGet.h
SWC::client::Query::Select::Scanner::meta_endpoints
Comm::EndPoints meta_endpoints
Definition: Scanner.h:79
RangeQuerySelect.h
SWC::client::Query::Select::Scanner::mngr_resolved_rgr_meta
bool mngr_resolved_rgr_meta(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Scanner.cc:528
SWC::DB::Cell::Key
Definition: CellKey.h:24
SWC::client::Query::Select::Scanner::meta_rid
cid_t meta_rid
Definition: Scanner.h:57
SWC::client::Query::Select::Scanner::mngr_located_master
bool mngr_located_master(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Scanner.cc:285
BaseUnorderedMap.h
SWC::client::Query::Select::Scanner::print
void print(std::ostream &out)
Definition: Scanner.cc:115
SWC::client::Query::Select::Scanner::~Scanner
~Scanner() noexcept
Definition: Scanner.cc:101
SWC::client::Query::Select::Scanner::execute
static SWC_CAN_INLINE void execute(const Handlers::Base::Ptr &hdlr, DB::Types::KeySeq key_seq, cid_t cid, DB::Specs::Interval &&intval)
Definition: Scanner.h:37
SWC::client::Query::Select::Scanner::retry_point
uint8_t retry_point
Definition: Scanner.h:66
SWC::DB::Types::KeySeq
KeySeq
Definition: KeySeq.h:13
SWC::client::Query::Select::Scanner::master_rid
cid_t master_rid
Definition: Scanner.h:56
SWC::client::Query::Select::Scanner::rgr_select
void rgr_select()
Definition: Scanner.cc:781
SWC::client::Query::Select::Scanner::rgr_located_meta
void rgr_located_meta(const ReqBase::Ptr &base, const Comm::Protocol::Rgr::Params::RangeLocateRsp &rsp)
Definition: Scanner.cc:618
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::client::Query::Select::Scanner::data_rid
cid_t data_rid
Definition: Scanner.h:58
SWC::client::Query::Select::Scanner::meta_end
DB::Cell::Key meta_end
Definition: Scanner.h:76
SWC::client::Query::Select::Scanner::mngr_resolved_rgr_select
bool mngr_resolved_rgr_select(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Scanner.cc:736
SWC::client::Query::Select::Scanner::execute
static SWC_CAN_INLINE void execute(const Handlers::Base::Ptr &hdlr, DB::Types::KeySeq key_seq, cid_t cid, const DB::Specs::Interval &intval)
Definition: Scanner.h:29
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::client::Query::Select::Scanner::master_mngr_revision
int64_t master_mngr_revision
Definition: Scanner.h:60
RangeLocate.h
SWC::client::Query::Select::Scanner::meta_req_base
ReqBase::Ptr meta_req_base
Definition: Scanner.h:70
Scanner.cc
SWC::Core::CompletionCounter< uint64_t >
SWC::client::Query::Select::Scanner::rgr_locate_meta
void rgr_locate_meta()
Definition: Scanner.cc:567
SWC::client::Query::Select::Scanner::selector
Handlers::Base::Ptr selector
Definition: Scanner.h:48
SWC::client::Query::Select::Scanner::completion
Core::CompletionCounter< uint64_t > completion
Definition: Scanner.h:46
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::client::Query::Select::Scanner::master_rgr_req_base
ReqBase::Ptr master_rgr_req_base
Definition: Scanner.h:69
SWC::client::Query::Select::Scanner
Definition: Scanner.h:25
SWC::client::Query::Select::Handlers::Base::Ptr
std::shared_ptr< Base > Ptr
Definition: Base.h:28
SWC::client::Query::Select::Scanner::response_if_last
void response_if_last()
Definition: Scanner.cc:172
SWC::client::Query::Select::Scanner::mngr_locate_master
void mngr_locate_master()
Definition: Scanner.cc:203
SWC::Core::Vector< EndPoint >
SWC::client::Query::Select::Scanner::Scanner
Scanner(const Handlers::Base::Ptr &hdlr, const DB::Types::KeySeq col_seq, const DB::Specs::Interval &interval, const cid_t cid)
Definition: Scanner.cc:35
SWC::DB::Specs::Interval
Definition: SpecsInterval.h:25
SWC::client::Query::Profiling
Definition: Profiling.h:24
SWC::client::Query::Select::Scanner::col_seq
const DB::Types::KeySeq col_seq
Definition: Scanner.h:49
SWC::client::Query::Select::Scanner::master_mngr_next
bool master_mngr_next
Definition: Scanner.h:62
SWC::client::Query::Select::Scanner::rgr_locate_master
void rgr_locate_master()
Definition: Scanner.cc:356
SWC::client::Query::Select::Scanner::Ptr
std::shared_ptr< Scanner > Ptr
Definition: Scanner.h:45
SWC::client::Query::Select::Scanner::mngr_resolve_rgr_meta
void mngr_resolve_rgr_meta()
Definition: Scanner.cc:490
SWC::rid_t
uint64_t rid_t
Definition: Identifiers.h:17
SWC::client::Query::Select::Scanner::data_req_base
ReqBase::Ptr data_req_base
Definition: Scanner.h:71
SWC::client::Query::Select::Scanner::data_endpoints
Comm::EndPoints data_endpoints
Definition: Scanner.h:80
SWC::client::Query::Select::Scanner::need_data_cid_check
bool need_data_cid_check
Definition: Scanner.h:67
SWC::client::Query::Select::Scanner::master_rgr_next
bool master_rgr_next
Definition: Scanner.h:64
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::Comm::Protocol::Rgr::Params::RangeQuerySelectRsp
Definition: RangeQuerySelect.h:81
SWC::client::Query::Select::Scanner::data_cid
const cid_t data_cid
Definition: Scanner.h:54
SWC::client::Query::Select::Scanner::rgr_located_master
void rgr_located_master(const ReqBase::Ptr &base, const Comm::Protocol::Rgr::Params::RangeLocateRsp &rsp)
Definition: Scanner.cc:417
SWC::client::Query::Select::Scanner::valid
SWC_CAN_INLINE bool valid() noexcept
Definition: Scanner.h:95
SWC::client::Query::Select::Scanner::rgr_selected
void rgr_selected(const ReqBase::Ptr &req, Comm::Protocol::Rgr::Params::RangeQuerySelectRsp &rsp)
Definition: Scanner.cc:810
SWC::client::Query::Select::Scanner::meta_cid
const cid_t meta_cid
Definition: Scanner.h:53