SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnGet.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_mngr_req_ColumnGet_h
7 #define swcdb_db_protocol_mngr_req_ColumnGet_h
8 
9 
12 
13 
14 namespace SWC { namespace Comm { namespace Protocol {
15 namespace Mngr { namespace Req {
16 
17 
18 template<typename DataT>
19 class ColumnGet final : public ColumnGet_Base {
20  public:
21 
22  typedef std::shared_ptr<ColumnGet> Ptr;
23  DataT data;
24 
25  template<typename... DataArgsT>
27  static Ptr make(
28  const Params::ColumnGetReq& params,
29  const uint32_t timeout,
30  DataArgsT&&... args) {
31  return Ptr(new ColumnGet(params, timeout, args...));
32  }
33 
34  template<typename... DataArgsT>
36  static void request(
37  const Params::ColumnGetReq& params,
38  const uint32_t timeout,
39  DataArgsT&&... args) {
40  make(params, timeout, args...)->run();
41  }
42 
43  template<typename... DataArgsT>
46  const std::string& name,
47  const uint32_t timeout,
48  DataArgsT&&... args) {
49  request(Params::ColumnGetReq(flag, name), timeout, args...);
50  }
51 
52  template<typename... DataArgsT>
55  cid_t cid,
56  const uint32_t timeout,
57  DataArgsT&&... args) {
58  request(Params::ColumnGetReq(flag, cid), timeout, args...);
59  }
60 
61  template<typename... DataArgsT>
63  static void schema(const std::string& name,
64  const uint32_t timeout,
65  DataArgsT&&... args) {
66  request(
67  Params::ColumnGetReq::Flag::SCHEMA_BY_NAME, name, timeout, args...);
68  }
69 
70  template<typename... DataArgsT>
72  static void schema(cid_t cid,
73  const uint32_t timeout,
74  DataArgsT&&... args) {
75  request(
76  Params::ColumnGetReq::Flag::SCHEMA_BY_ID, cid, timeout, args...);
77  }
78 
79  template<typename... DataArgsT>
81  static void cid(const std::string& name,
82  const uint32_t timeout,
83  DataArgsT&&... args) {
84  request(
85  Params::ColumnGetReq::Flag::ID_BY_NAME, name, timeout, args...);
86  }
87 
88  virtual ~ColumnGet() noexcept { }
89 
90  protected:
91 
92  template<typename... DataArgsT>
95  const Params::ColumnGetReq& params,
96  const uint32_t timeout,
97  DataArgsT&&... args)
98  : ColumnGet_Base(params, timeout),
99  data(args...) {
100  }
101 
102  SWC::client::Clients::Ptr& get_clients() noexcept override {
103  return data.get_clients();
104  }
105 
106  bool valid() override {
107  return data.valid();
108  }
109 
110  void callback(int err, const Params::ColumnGetRsp& rsp) override {
111  data.callback(req(), err, rsp);
112  }
113 
114 };
115 
116 
117 
134 typedef Common::Req::function<
135  std::function<void(
136  void*,
138  int err,
140  )>
142 
143 
144 }}}}}
145 
146 
147 #endif // swcdb_db_protocol_mngr_req_ColumnGet_h
SWC::Comm::Protocol::Mngr::Req::ColumnGet::get_clients
SWC::client::Clients::Ptr & get_clients() noexcept override
Definition: ColumnGet.h:102
SWC::Comm::Protocol::Mngr::Params::ColumnGetReq
Definition: ColumnGet.h:18
SWC::Comm::Protocol::Mngr::Req::ColumnGet::schema
static SWC_CAN_INLINE void schema(const std::string &name, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:63
SWC::Comm::client::ConnQueueReqBase::req
SWC_CAN_INLINE Ptr req() noexcept
Definition: ClientConnQueue.h:39
SWC::Comm::Protocol::Mngr::Req::ColumnGet::data
DataT data
Definition: ColumnGet.h:23
SWC::Comm::Protocol::Mngr::Params::ColumnGetReq::Flag
Flag
Definition: ColumnGet.h:21
SWC::Comm::Protocol::Mngr::Req::ColumnGet::valid
bool valid() override
Definition: ColumnGet.h:106
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::Protocol::Mngr::Req::ColumnGet::request
static SWC_CAN_INLINE void request(const Params::ColumnGetReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:36
handler_data.h
SWC::Comm::Protocol::Mngr::Req::ColumnGet::request
static SWC_CAN_INLINE void request(Params::ColumnGetReq::Flag flag, const std::string &name, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:45
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
ColumnGet_Base.h
SWC::Comm::Protocol::Mngr::Req::ColumnGet
Definition: ColumnGet.h:19
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Mngr::Req::ColumnGet::callback
void callback(int err, const Params::ColumnGetRsp &rsp) override
Definition: ColumnGet.h:110
SWC::Comm::Protocol::Mngr::Req::ColumnGet::Ptr
std::shared_ptr< ColumnGet > Ptr
Definition: ColumnGet.h:22
SWC::Comm::Protocol::Mngr::Req::ColumnGet::cid
static SWC_CAN_INLINE void cid(const std::string &name, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:81
SWC::Comm::Protocol::Mngr::Req::ColumnGet::ColumnGet
SWC_CAN_INLINE ColumnGet(const Params::ColumnGetReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:94
SWC::Comm::Protocol::Mngr::Req::Functional_ColumnGet
Common::Req::function< std::function< void(void *, const client::ConnQueue::ReqBase::Ptr &, int err, Params::ColumnGetRsp &)>> Functional_ColumnGet
Definition: ColumnGet.h:141
SWC::Comm::Protocol::Mngr::Req::ColumnGet::schema
static SWC_CAN_INLINE void schema(cid_t cid, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:72
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::Protocol::Mngr::Req::ColumnGet_Base
Definition: ColumnGet_Base.h:19
SWC::Comm::Protocol::Common::Req::function
Definition: handler_data.h:19
SWC::Comm::Protocol::Mngr::Params::ColumnGetRsp
Definition: ColumnGet.h:59
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::Comm::Protocol::Mngr::Req::ColumnGet::make
static SWC_CAN_INLINE Ptr make(const Params::ColumnGetReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:27
SWC::Comm::Protocol::Mngr::Req::ColumnGet::~ColumnGet
virtual ~ColumnGet() noexcept
Definition: ColumnGet.h:88
SWC::Comm::Protocol::Mngr::Req::ColumnGet::request
static SWC_CAN_INLINE void request(Params::ColumnGetReq::Flag flag, cid_t cid, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnGet.h:54