SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnMng.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_ColumnMng_h
7 #define swcdb_db_protocol_bkr_req_ColumnMng_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 ColumnMng final : public ColumnMng_Base {
20  public:
21 
22  typedef std::shared_ptr<ColumnMng> Ptr;
23  DataT data;
24 
25  template<typename... DataArgsT>
27  static Ptr make(
28  const Mngr::Params::ColumnMng& params,
29  const uint32_t timeout,
30  DataArgsT&&... args) {
31  return Ptr(new ColumnMng(params, timeout, args...));
32  }
33 
34  template<typename... DataArgsT>
36  static void request(
37  const Mngr::Params::ColumnMng& params,
38  const uint32_t timeout,
39  DataArgsT&&... args) {
40  make(params, timeout, args...)->run();
41  }
42 
43  template<typename... DataArgsT>
46  const DB::Schema::Ptr& schema,
47  const uint32_t timeout,
48  DataArgsT&&... args) {
49  request(Mngr::Params::ColumnMng(func, schema), timeout, args...);
50  }
51 
52  template<typename... DataArgsT>
54  static void create(const DB::Schema::Ptr& schema,
55  const uint32_t timeout,
56  DataArgsT&&... args) {
57  request(
58  Mngr::Params::ColumnMng::Function::CREATE, schema, timeout, args...);
59  }
60 
61  template<typename... DataArgsT>
63  static void modify(const DB::Schema::Ptr& schema,
64  const uint32_t timeout,
65  DataArgsT&&... args) {
66  request(
67  Mngr::Params::ColumnMng::Function::MODIFY, schema, timeout, args...);
68  }
69 
70  template<typename... DataArgsT>
72  static void remove(const DB::Schema::Ptr& schema,
73  const uint32_t timeout,
74  DataArgsT&&... args) {
75  request(
76  Mngr::Params::ColumnMng::Function::REMOVE, schema, timeout, args...);
77  }
78 
79  virtual ~ColumnMng() noexcept { }
80 
81  void handle(ConnHandlerPtr, const Event::Ptr& ev) override {
82  data.callback(req(), ev->response_code());
83  }
84 
85  protected:
86 
87  template<typename... DataArgsT>
90  const Mngr::Params::ColumnMng& params,
91  const uint32_t timeout,
92  DataArgsT&&... args)
93  : ColumnMng_Base(params, timeout),
94  data(args...) {
95  }
96 
97  SWC::client::Clients::Ptr& get_clients() noexcept override {
98  return data.get_clients();
99  }
100 
101  bool valid() override {
102  return data.valid() && !data.get_clients()->stopping();
103  }
104 
105  void callback(int err) override {
106  data.callback(req(), err);
107  }
108 
109 };
110 
111 
112 
128 typedef Common::Req::function<
129  std::function<void(
130  void*,
132  int err
133  )>
135 
136 
137 
138 }}}}}
139 
140 
141 
142 #endif // swcdb_db_protocol_bkr_req_ColumnMng_h
SWC::Comm::Protocol::Bkr::Req::ColumnMng::get_clients
SWC::client::Clients::Ptr & get_clients() noexcept override
Definition: ColumnMng.h:97
SWC::Comm::Protocol::Bkr::Req::ColumnMng::remove
static SWC_CAN_INLINE void remove(const DB::Schema::Ptr &schema, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:72
SWC::Comm::client::ConnQueueReqBase::req
SWC_CAN_INLINE Ptr req() noexcept
Definition: ClientConnQueue.h:39
SWC::DB::Schema::Ptr
std::shared_ptr< Schema > Ptr
Definition: Schema.h:185
SWC::Comm::Protocol::Bkr::Req::ColumnMng::request
static SWC_CAN_INLINE void request(const Mngr::Params::ColumnMng &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:36
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::Protocol::Bkr::Req::ColumnMng::ColumnMng
SWC_CAN_INLINE ColumnMng(const Mngr::Params::ColumnMng &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:89
SWC::Comm::Protocol::Bkr::Req::ColumnMng
Definition: ColumnMng.h:19
SWC::Comm::Protocol::Bkr::Req::ColumnMng::~ColumnMng
virtual ~ColumnMng() noexcept
Definition: ColumnMng.h:79
handler_data.h
ColumnMng_Base.h
SWC::Comm::Protocol::Bkr::Req::ColumnMng::make
static SWC_CAN_INLINE Ptr make(const Mngr::Params::ColumnMng &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:27
SWC::Comm::Protocol::Bkr::Req::ColumnMng::modify
static SWC_CAN_INLINE void modify(const DB::Schema::Ptr &schema, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:63
SWC::Comm::Protocol::Bkr::Req::ColumnMng::data
DataT data
Definition: ColumnMng.h:23
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::ColumnMng::callback
void callback(int err) override
Definition: ColumnMng.h:105
SWC::Comm::Protocol::Mngr::Params::ColumnMng::Function
Function
Definition: ColumnMng.h:21
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::Protocol::Mngr::Params::ColumnMng
Definition: ColumnMng.h:18
SWC::Comm::Protocol::Bkr::Req::ColumnMng::handle
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
Definition: ColumnMng.h:81
SWC::Comm::Protocol::Common::Req::function
Definition: handler_data.h:19
SWC::Comm::Protocol::Bkr::Req::ColumnMng::valid
bool valid() override
Definition: ColumnMng.h:101
SWC::Comm::Protocol::Bkr::Req::ColumnMng_Base
Definition: ColumnMng_Base.h:19
SWC::Comm::Protocol::Bkr::Req::Functional_ColumnMng
Common::Req::function< std::function< void(void *, const client::ConnQueue::ReqBase::Ptr &, int err)>> Functional_ColumnMng
Definition: ColumnMng.h:134
SWC::Comm::Protocol::Bkr::Req::ColumnMng::Ptr
std::shared_ptr< ColumnMng > Ptr
Definition: ColumnMng.h:22
SWC::Comm::Protocol::Bkr::Req::ColumnMng::request
static SWC_CAN_INLINE void request(Mngr::Params::ColumnMng::Function func, const DB::Schema::Ptr &schema, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:45
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::Bkr::Req::ColumnMng::create
static SWC_CAN_INLINE void create(const DB::Schema::Ptr &schema, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnMng.h:54
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25