SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RangeQuerySelect.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_protocol_rgr_req_RangeQuerySelect_h
7 #define swcdb_db_protocol_rgr_req_RangeQuerySelect_h
8 
9 
14 
15 
16 namespace SWC { namespace Comm { namespace Protocol {
17 namespace Rgr { namespace Req {
18 
19 
20 template<typename DataT>
22  public:
23 
24  typedef std::shared_ptr<RangeQuerySelect> Ptr;
25  DataT data;
26 
27  template<typename... DataArgsT>
29  static Ptr make(
30  const Params::RangeQuerySelectReqRef& params,
31  const uint32_t timeout,
32  DataArgsT&&... args) {
33  return Ptr(new RangeQuerySelect(params, timeout, args...));
34  }
35 
37  static void request(const Ptr& req, const EndPoints& endpoints) {
38  req->data.get_clients()->get_rgr_queue(endpoints)->put(req);
39  }
40 
41  template<typename... DataArgsT>
43  static void request(
44  const Params::RangeQuerySelectReqRef& params,
45  const uint32_t timeout,
46  const EndPoints& endpoints,
47  DataArgsT&&... args) {
48  request(make(params, timeout, args...), endpoints);
49  }
50 
55 
56  virtual ~RangeQuerySelect() noexcept { }
57 
58  bool valid() override {
59  return data.valid();
60  }
61 
62  void handle_no_conn() override {
64  data.callback(req(), rsp);
65  }
66 
67  void handle(ConnHandlerPtr, const Event::Ptr& ev) override {
69  ev->error, ev->data.base, ev->data.size, ev->data_ext);
70  data.callback(req(), rsp);
71  }
72 
73  protected:
74 
75  template<typename... DataArgsT>
78  const Params::RangeQuerySelectReqRef& params,
79  const uint32_t timeout,
80  DataArgsT&&... args)
81  : client::ConnQueue::ReqBase(
82  Buffers::make(params, 0, RANGE_QUERY_SELECT, timeout)
83  ),
84  data(args...) {
85  }
86 
87 };
88 
89 
90 
106 typedef Common::Req::function<
107  std::function<void(
108  void*,
111  )>
113 
114 
115 
116 
117 }}}}}
118 
119 
120 #endif // swcdb_db_protocol_rgr_req_RangeQuerySelect_h
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::data
DataT data
Definition: RangeQuerySelect.h:25
SWC::Comm::client::ConnQueueReqBase::req
SWC_CAN_INLINE Ptr req() noexcept
Definition: ClientConnQueue.h:39
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::RangeQuerySelect
RangeQuerySelect(RangeQuerySelect &&)=delete
SWC::Comm::client::ConnQueueReqBase
Definition: ClientConnQueue.h:22
RangeQuerySelect.h
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::make
static SWC_CAN_INLINE Ptr make(const Params::RangeQuerySelectReqRef &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RangeQuerySelect.h:29
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::operator=
RangeQuerySelect & operator=(const RangeQuerySelect &)=delete
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::operator=
RangeQuerySelect & operator=(RangeQuerySelect &&)=delete
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::Ptr
std::shared_ptr< RangeQuerySelect > Ptr
Definition: RangeQuerySelect.h:24
handler_data.h
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::handle
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
Definition: RangeQuerySelect.h:67
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect
Definition: RangeQuerySelect.h:21
SWC::Comm::Protocol::Rgr::Params::RangeQuerySelectReqRef
Definition: RangeQuerySelect.h:51
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::~RangeQuerySelect
virtual ~RangeQuerySelect() noexcept
Definition: RangeQuerySelect.h:56
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::request
static SWC_CAN_INLINE void request(const Ptr &req, const EndPoints &endpoints)
Definition: RangeQuerySelect.h:37
ClientConnQueue.h
SWC::Comm::Buffers
Definition: Buffers.h:20
Commands.h
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::Core::Vector< EndPoint >
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::handle_no_conn
void handle_no_conn() override
Definition: RangeQuerySelect.h:62
SWC::Comm::Protocol::Common::Req::function
Definition: handler_data.h:19
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::valid
bool valid() override
Definition: RangeQuerySelect.h:58
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::request
static SWC_CAN_INLINE void request(const Params::RangeQuerySelectReqRef &params, const uint32_t timeout, const EndPoints &endpoints, DataArgsT &&... args)
Definition: RangeQuerySelect.h:43
SWC::Comm::Protocol::Rgr::RANGE_QUERY_SELECT
@ RANGE_QUERY_SELECT
Definition: Commands.h:35
SWC::Comm::Protocol::Rgr::Req::Functional_RangeQuerySelect
Common::Req::function< std::function< void(void *, const client::ConnQueue::ReqBase::Ptr &, const Params::RangeQuerySelectRsp &)>> Functional_RangeQuerySelect
Definition: RangeQuerySelect.h:112
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
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::Comm::Protocol::Rgr::Req::RangeQuerySelect::RangeQuerySelect
RangeQuerySelect(const RangeQuerySelect &)=delete
SWC::Comm::Protocol::Rgr::Req::RangeQuerySelect::RangeQuerySelect
SWC_CAN_INLINE RangeQuerySelect(const Params::RangeQuerySelectReqRef &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RangeQuerySelect.h:77