SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnUpdate.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_manager_Protocol_handlers_ColumnUpdate_h
8 #define swcdb_manager_Protocol_handlers_ColumnUpdate_h
9 
11 
12 
13 namespace SWC { namespace Comm { namespace Protocol {
14 namespace Mngr { namespace Handler {
15 
16 
17 struct ColumnUpdate {
20 
23  const Comm::Event::Ptr& a_ev) noexcept
24  : conn(a_conn), ev(a_ev) {
25  }
26 
28  ColumnUpdate(ColumnUpdate&& other) noexcept
29  : conn(std::move(other.conn)), ev(std::move(other.ev)) {
30  }
31 
32  ColumnUpdate(const ColumnUpdate&) = delete;
34  ColumnUpdate& operator=(const ColumnUpdate&) = delete;
35 
36  ~ColumnUpdate() noexcept { }
37 
38  void operator()() {
39  if(ev->expired())
40  return;
41 
42  try {
43  const uint8_t *ptr = ev->data.base;
44  size_t remain = ev->data.size;
45 
46  Params::ColumnUpdate params;
47  params.decode(&ptr, &remain);
48 
49  conn->response_ok(ev);
50 
51  params.function == Params::ColumnMng::Function::INTERNAL_EXPECT
53  params.cid_begin, params.cid_end, params.total,
54  std::move(params.columns), false
55  )
57  params.function, params.schema, params.err, params.id
58  ); // +?timeout
59  } catch(...) {
62  conn->send_error(e.code(), "", ev);
63  }
64  }
65 
66 };
67 
68 
69 }}}}}
70 
71 #endif // swcdb_manager_Protocol_handlers_ColumnUpdate_h
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::ColumnUpdate
SWC_CAN_INLINE ColumnUpdate(const Comm::ConnHandlerPtr &a_conn, const Comm::Event::Ptr &a_ev) noexcept
Definition: ColumnUpdate.h:22
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate
Definition: ColumnUpdate.h:15
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::ColumnUpdate
SWC_CAN_INLINE ColumnUpdate(ColumnUpdate &&other) noexcept
Definition: ColumnUpdate.h:28
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::Comm::Protocol::Mngr::Handler::ColumnUpdate::operator=
ColumnUpdate & operator=(ColumnUpdate &&)=delete
SWC::Manager::MngdColumns::set_expect
void set_expect(cid_t cid_begin, cid_t cid_end, uint64_t total, cids_t &&columns, bool initial)
Definition: MngdColumns.cc:249
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::~ColumnUpdate
~ColumnUpdate() noexcept
Definition: ColumnUpdate.h:36
SWC_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::cid_end
cid_t cid_end
Definition: ColumnUpdate.h:71
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::ColumnUpdate
ColumnUpdate(const ColumnUpdate &)=delete
SWC::Manager::MngdColumns::update_status
void update_status(Comm::Protocol::Mngr::Params::ColumnMng::Function func, const DB::Schema::Ptr &schema, int err, uint64_t req_id, bool initial=false)
Definition: MngdColumns.cc:304
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::total
uint64_t total
Definition: ColumnUpdate.h:72
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::cid_begin
cid_t cid_begin
Definition: ColumnUpdate.h:70
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::columns
cids_t columns
Definition: ColumnUpdate.h:69
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::Env::Mngr::mngd_columns
static SWC_CAN_INLINE Manager::MngdColumns * mngd_columns() noexcept
Definition: MngrEnv.h:74
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::ev
Comm::Event::Ptr ev
Definition: ColumnUpdate.h:19
ColumnUpdate.h
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate
Definition: ColumnUpdate.h:17
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::operator()
void operator()()
Definition: ColumnUpdate.h:38
SWC::LOG_ERROR
@ LOG_ERROR
Definition: Logger.h:32
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::schema
DB::Schema::Ptr schema
Definition: ColumnUpdate.h:73
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::function
ColumnMng::Function function
Definition: ColumnUpdate.h:67
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::Protocol::Mngr::Params::ColumnUpdate::err
int err
Definition: ColumnUpdate.h:74
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::conn
Comm::ConnHandlerPtr conn
Definition: ColumnUpdate.h:18
SWC::Comm::Protocol::Mngr::Handler::ColumnUpdate::operator=
ColumnUpdate & operator=(const ColumnUpdate &)=delete
SWC::Error::Exception
Definition: Exception.h:21
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::id
uint64_t id
Definition: ColumnUpdate.h:68