SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnCompact.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_bkr_req_ColumnCompact_h
7 #define swcdb_db_protocol_bkr_req_ColumnCompact_h
8 
9 
12 
13 
14 namespace SWC { namespace Comm { namespace Protocol {
15 namespace Bkr { namespace Req {
16 
17 
18 template<typename DataT>
19 class ColumnCompact final : public ColumnCompact_Base {
20  public:
21 
22  typedef std::shared_ptr<ColumnCompact> Ptr;
23  DataT data;
24 
25  template<typename... DataArgsT>
27  static Ptr make(
28  const Mngr::Params::ColumnCompactReq& params,
29  const uint32_t timeout,
30  DataArgsT&&... args) {
31  return Ptr(new ColumnCompact(params, timeout, args...));
32  }
33 
34  template<typename... DataArgsT>
36  static void request(
37  const Mngr::Params::ColumnCompactReq& params,
38  const uint32_t timeout,
39  DataArgsT&&... args) {
40  make(params, timeout, args...)->run();
41  }
42 
43  template<typename... DataArgsT>
45  static void request(cid_t cid,
46  const uint32_t timeout,
47  DataArgsT&&... args) {
48  request(Mngr::Params::ColumnCompactReq(cid), timeout, args...);
49  }
50 
51  virtual ~ColumnCompact() noexcept { }
52 
53  void handle(ConnHandlerPtr, const Event::Ptr& ev) override {
54  data.callback(
55  req(),
56  Mngr::Params::ColumnCompactRsp(ev->error, ev->data.base, ev->data.size)
57  );
58  }
59 
60  protected:
61 
62  template<typename... DataArgsT>
65  const Mngr::Params::ColumnCompactReq& params,
66  const uint32_t timeout,
67  DataArgsT&&... args)
68  : ColumnCompact_Base(params, timeout),
69  data(args...) {
70  }
71 
72  SWC::client::Clients::Ptr& get_clients() noexcept override {
73  return data.get_clients();
74  }
75 
76  bool valid() override {
77  return data.valid() && !data.get_clients()->stopping();
78  }
79 
80  void callback(const Mngr::Params::ColumnCompactRsp& rsp) override {
81  data.callback(req(), rsp);
82  }
83 
84 };
85 
86 
87 
103 typedef Common::Req::function<
104  std::function<void(
105  void*,
108  )>
110 
111 
112 
113 }}}}}
114 
115 
116 
117 #endif // swcdb_db_protocol_bkr_req_ColumnCompact_h
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::get_clients
SWC::client::Clients::Ptr & get_clients() noexcept override
Definition: ColumnCompact.h:72
SWC::Comm::client::ConnQueueReqBase::req
SWC_CAN_INLINE Ptr req() noexcept
Definition: ClientConnQueue.h:39
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::callback
void callback(const Mngr::Params::ColumnCompactRsp &rsp) override
Definition: ColumnCompact.h:80
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::~ColumnCompact
virtual ~ColumnCompact() noexcept
Definition: ColumnCompact.h:51
handler_data.h
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::data
DataT data
Definition: ColumnCompact.h:23
SWC::Comm::Protocol::Mngr::Params::ColumnCompactRsp
Definition: ColumnCompact.h:42
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::Bkr::Req::ColumnCompact::handle
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
Definition: ColumnCompact.h:53
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::make
static SWC_CAN_INLINE Ptr make(const Mngr::Params::ColumnCompactReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnCompact.h:27
SWC::Comm::Protocol::Bkr::Req::Functional_ColumnCompact
Common::Req::function< std::function< void(void *, const client::ConnQueue::ReqBase::Ptr &, Mngr::Params::ColumnCompactRsp &)>> Functional_ColumnCompact
Definition: ColumnCompact.h:109
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::request
static SWC_CAN_INLINE void request(cid_t cid, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnCompact.h:45
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
ColumnCompact_Base.h
SWC::Comm::Protocol::Common::Req::function
Definition: handler_data.h:19
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::Ptr
std::shared_ptr< ColumnCompact > Ptr
Definition: ColumnCompact.h:22
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::request
static SWC_CAN_INLINE void request(const Mngr::Params::ColumnCompactReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnCompact.h:36
SWC::Comm::Protocol::Bkr::Req::ColumnCompact::valid
bool valid() override
Definition: ColumnCompact.h:76
SWC::Comm::Protocol::Bkr::Req::ColumnCompact_Base
Definition: ColumnCompact_Base.h:19
SWC::Comm::Protocol::Bkr::Req::ColumnCompact
Definition: ColumnCompact.h:19
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::Bkr::Req::ColumnCompact::ColumnCompact
SWC_CAN_INLINE ColumnCompact(const Mngr::Params::ColumnCompactReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnCompact.h:64
SWC::Comm::Protocol::Mngr::Params::ColumnCompactReq
Definition: ColumnCompact.h:18