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 
7 #ifndef swcdb_broker_Protocol_handlers_ColumnCompact_h
8 #define swcdb_broker_Protocol_handlers_ColumnCompact_h
9 
10 
12 
13 
14 namespace SWC { namespace Comm { namespace Protocol {
15 namespace Bkr { namespace Handler {
16 
17 
18 struct ColumnCompact {
19 
22 
24  ColumnCompact(const ConnHandlerPtr& a_conn, const Event::Ptr& a_ev) noexcept
25  : conn(a_conn), ev(a_ev) {
26  }
27 
28  ~ColumnCompact() noexcept { }
29 
32  return Env::Clients::get();
33  }
34 
36  bool valid() {
37  return !ev->expired() && conn->is_open() && Env::Bkr::is_accepting();
38  }
39 
42  const Mngr::Params::ColumnCompactRsp& rsp) {
43  if(!ev->expired() && conn->is_open()) {
44  int err = rsp.err;
47  conn->send_response(
49  }
51  }
52 
53 };
54 
55 
56 void column_compact(const ConnHandlerPtr& conn, const Event::Ptr& ev) {
57  try {
58  const uint8_t *ptr = ev->data.base;
59  size_t remain = ev->data.size;
60 
62  params.decode(&ptr, &remain);
63 
65  params, ev->header.timeout_ms, conn, ev);
66 
67  } catch(...) {
70  conn->send_response(
73  }
74 
75 }
76 
77 
78 }}}}}
79 
80 #endif // swcdb_broker_Protocol_handlers_ColumnCompact_h
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::callback
SWC_CAN_INLINE void callback(const client::ConnQueue::ReqBase::Ptr &, const Mngr::Params::ColumnCompactRsp &rsp)
Definition: ColumnCompact.h:41
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::valid
SWC_CAN_INLINE bool valid()
Definition: ColumnCompact.h:36
SWC::Error::Exception::code
constexpr SWC_CAN_INLINE int code() const noexcept
Definition: Exception.h:51
SWC_LOG_OSTREAM
#define SWC_LOG_OSTREAM
Definition: Logger.h:44
SWC::Error::SERVER_SHUTTING_DOWN
@ SERVER_SHUTTING_DOWN
Definition: Error.h:84
SWC::Env::Clients::get
static SWC_CAN_INLINE client::Clients::Ptr & get() noexcept
Definition: Clients.h:299
SWC_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::conn
ConnHandlerPtr conn
Definition: ColumnCompact.h:20
SWC::Comm::Protocol::Mngr::Req::ColumnCompact::request
static SWC_CAN_INLINE void request(const Params::ColumnCompactReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnCompact.h:36
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::Protocol::Bkr::Handler::column_compact
void column_compact(const ConnHandlerPtr &conn, const Event::Ptr &ev)
Definition: ColumnCompact.h:56
SWC::Env::Bkr::is_accepting
static SWC_CAN_INLINE bool is_accepting() noexcept
Definition: BrokerEnv.h:37
SWC::Comm::Protocol::Mngr::Params::ColumnCompactRsp
Definition: ColumnCompact.h:42
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC_CURRENT_EXCEPTION
#define SWC_CURRENT_EXCEPTION(_msg_)
Definition: Exception.h:119
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::ColumnCompact
SWC_CAN_INLINE ColumnCompact(const ConnHandlerPtr &a_conn, const Event::Ptr &a_ev) noexcept
Definition: ColumnCompact.h:24
SWC::Error::CLIENT_STOPPING
@ CLIENT_STOPPING
Definition: Error.h:127
SWC::LOG_ERROR
@ LOG_ERROR
Definition: Logger.h:32
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
ColumnCompact.h
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::~ColumnCompact
~ColumnCompact() noexcept
Definition: ColumnCompact.h:28
SWC::Comm::Protocol::Mngr::Params::ColumnCompactRsp::err
int err
Definition: ColumnCompact.h:52
SWC::Comm::Buffers::make
static SWC_CAN_INLINE Ptr make(uint32_t reserve=0)
Definition: Buffers.h:27
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::get_clients
SWC_CAN_INLINE SWC::client::Clients::Ptr & get_clients() noexcept
Definition: ColumnCompact.h:31
SWC::Comm::Serializable::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: Serializable.h:59
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::Env::Bkr::processed
static SWC_CAN_INLINE void processed() noexcept
Definition: BrokerEnv.h:55
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact::ev
Event::Ptr ev
Definition: ColumnCompact.h:21
SWC::Error::Exception
Definition: Exception.h:21
SWC::Comm::Protocol::Mngr::Params::ColumnCompactReq
Definition: ColumnCompact.h:18
SWC::Comm::Protocol::Bkr::Handler::ColumnCompact
Definition: ColumnCompact.h:18