SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RangeRemove.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_req_RangeRemove_h
7 #define swcdb_db_protocol_req_RangeRemove_h
8 
9 
11 
13 
14 
15 namespace SWC { namespace Comm { namespace Protocol {
16 namespace Mngr { namespace Req {
17 
18 
19 template<typename DataT>
21  public:
22 
23  typedef std::shared_ptr<RangeRemove> Ptr;
24  DataT data;
25 
26  template<typename... DataArgsT>
28  static Ptr make(
29  const Params::RangeRemoveReq& params,
30  const uint32_t timeout,
31  DataArgsT&&... args) {
32  return Ptr(new RangeRemove(params, timeout, args...));
33  }
34 
35  template<typename... DataArgsT>
37  static void request(
38  const Params::RangeRemoveReq& params,
39  const uint32_t timeout,
40  DataArgsT&&... args) {
41  make(params, timeout, args...)->run();
42  }
43 
44  RangeRemove(RangeRemove&&) = delete;
45  RangeRemove(const RangeRemove&) = delete;
47  RangeRemove& operator=(const RangeRemove&) = delete;
48 
49  virtual ~RangeRemove() noexcept { }
50 
51  bool valid() override {
52  return data.valid();
53  }
54 
55  void handle_no_conn() override {
56  if(data.get_clients()->stopping()) {
57  data.callback(
59  } else if(!data.valid()) {
60  data.callback(
62  } else {
63  data.get_clients()->remove_mngr(endpoints);
64  endpoints.clear();
65  run();
66  }
67  }
68 
69  bool run() override {
70  return data.get_clients()->managers.put(
71  data.get_clients(), data.get_cid(), endpoints, req());
72  }
73 
74  void handle(ConnHandlerPtr, const Event::Ptr& ev) override {
75  data.callback(
76  req(),
77  Params::RangeRemoveRsp(ev->error, ev->data.base, ev->data.size)
78  );
79  }
80 
81  protected:
82 
83  template<typename... DataArgsT>
86  const Params::RangeRemoveReq& params,
87  const uint32_t timeout,
88  DataArgsT&&... args)
89  : client::ConnQueue::ReqBase(
90  Buffers::make(params, 0, RANGE_REMOVE, timeout)
91  ),
92  data(args...),
93  endpoints() {
94  }
95 
96  private:
98 
99 };
100 
101 
102 
103 }}}}}
104 
105 #endif // swcdb_db_protocol_req_RangeRemove_h
SWC::Comm::Protocol::Mngr::Params::RangeRemoveReq
Definition: RangeRemove.h:16
SWC::Comm::Protocol::Mngr::Req::RangeRemove::handle
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
Definition: RangeRemove.h:74
SWC::Comm::Protocol::Mngr::Req::RangeRemove::run
bool run() override
Definition: RangeRemove.h:69
SWC::Comm::Protocol::Mngr::Req::RangeRemove::RangeRemove
SWC_CAN_INLINE RangeRemove(const Params::RangeRemoveReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RangeRemove.h:85
SWC::Comm::client::ConnQueueReqBase::req
SWC_CAN_INLINE Ptr req() noexcept
Definition: ClientConnQueue.h:39
SWC::Core::Vector::clear
SWC_CAN_INLINE void clear() noexcept(_NoExceptDestructor)
Definition: Vector.h:120
SWC::Comm::Protocol::Mngr::Params::RangeRemoveRsp
Definition: RangeRemove.h:59
SWC::Comm::Protocol::Mngr::Req::RangeRemove::valid
bool valid() override
Definition: RangeRemove.h:51
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::Comm::client::ConnQueueReqBase
Definition: ClientConnQueue.h:22
SWC::Comm::Protocol::Mngr::Req::RangeRemove::make
static SWC_CAN_INLINE Ptr make(const Params::RangeRemoveReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RangeRemove.h:28
SWC::Comm::Protocol::Mngr::Req::RangeRemove::endpoints
EndPoints endpoints
Definition: RangeRemove.h:97
RangeRemove.h
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::Mngr::Req::RangeRemove::operator=
RangeRemove & operator=(RangeRemove &&)=delete
SWC::Comm::Buffers
Definition: Buffers.h:20
SWC::Error::CLIENT_STOPPING
@ CLIENT_STOPPING
Definition: Error.h:127
Commands.h
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Core::Vector< EndPoint >
SWC::Comm::Protocol::Mngr::Req::RangeRemove::Ptr
std::shared_ptr< RangeRemove > Ptr
Definition: RangeRemove.h:23
SWC::Comm::Protocol::Mngr::RANGE_REMOVE
@ RANGE_REMOVE
Definition: Commands.h:74
SWC::Comm::Protocol::Mngr::Req::RangeRemove::RangeRemove
RangeRemove(const RangeRemove &)=delete
SWC::Comm::Protocol::Mngr::Req::RangeRemove::RangeRemove
RangeRemove(RangeRemove &&)=delete
SWC::Comm::Protocol::Mngr::Req::RangeRemove::data
DataT data
Definition: RangeRemove.h:24
SWC::Comm::Protocol::Mngr::Req::RangeRemove::request
static SWC_CAN_INLINE void request(const Params::RangeRemoveReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RangeRemove.h:37
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::Mngr::Req::RangeRemove::operator=
RangeRemove & operator=(const RangeRemove &)=delete
SWC::Comm::Protocol::Mngr::Req::RangeRemove
Definition: RangeRemove.h:20
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::Error::CANCELLED
@ CANCELLED
Definition: Error.h:56
SWC::Comm::Protocol::Mngr::Req::RangeRemove::~RangeRemove
virtual ~RangeRemove() noexcept
Definition: RangeRemove.h:49
SWC::Comm::Protocol::Mngr::Req::RangeRemove::handle_no_conn
void handle_no_conn() override
Definition: RangeRemove.h:55