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.cc
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 
8 
9 
10 namespace SWC { namespace Comm { namespace Protocol {
11 namespace Rgr { namespace Req {
12 
13 
16  const Manager::Column::Ptr& a_col,
17  const DB::Schema::Ptr& a_schema,
18  uint64_t a_req_id)
19  : client::ConnQueue::ReqBase(
20  Buffers::make(
21  Params::ColumnUpdate(a_schema), 0, SCHEMA_UPDATE, 60000)
22  ),
23  rgr(a_rgr), col(a_col), schema(a_schema), req_id(a_req_id) {
24 }
25 
27  if(ev->response_code())
28  return handle_no_conn();
29 
30  col->change_rgr_schema(rgr->rgrid, schema->revision);
31  updated();
32 }
33 
35  if(rgr->state == DB::Types::MngrRangerState::ACK) {
36  rgr->failures.fetch_add(1);
37  request_again();
38  } else {
39  updated();
40  }
41 }
42 
44  if(!Env::Mngr::rangers()->update(col, schema, req_id, false)) {
46  Mngr::Params::ColumnMng::Function::INTERNAL_ACK_MODIFY,
47  schema,
48  Error::OK,
49  req_id
50  );
51  }
52 }
53 
54 
55 }}}}}
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate
Definition: ColumnUpdate.h:14
SWC::DB::Schema::Ptr
std::shared_ptr< Schema > Ptr
Definition: Schema.h:185
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::handle
void handle(ConnHandlerPtr conn, const Event::Ptr &ev) override
Definition: ColumnUpdate.cc:26
ColumnUpdate.h
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::schema
DB::Schema::Ptr schema
Definition: ColumnUpdate.h:39
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::handle_no_conn
void handle_no_conn() override
Definition: ColumnUpdate.cc:34
SWC::Comm::client::ConnQueueReqBase::request_again
void request_again()
Definition: ClientConnQueue.cc:12
SWC::DB::Types::MngrRangerState::ACK
const uint8_t ACK
Definition: MngrRangerState.h:18
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::col
Manager::Column::Ptr col
Definition: ColumnUpdate.h:38
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::rgr
Manager::Ranger::Ptr rgr
Definition: ColumnUpdate.h:37
SWC::Env::Mngr::mngd_columns
static SWC_CAN_INLINE Manager::MngdColumns * mngd_columns() noexcept
Definition: MngrEnv.h:74
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::ColumnUpdate
ColumnUpdate(const Manager::Ranger::Ptr &rgr, const Manager::Column::Ptr &col, const DB::Schema::Ptr &schema, uint64_t req_id)
Definition: ColumnUpdate.cc:15
SWC::Manager::Ranger::Ptr
std::shared_ptr< Ranger > Ptr
Definition: Ranger.h:21
SWC::Comm::Buffers
Definition: Buffers.h:20
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Manager::MngdColumns::update
void update(Comm::Protocol::Mngr::Params::ColumnMng::Function func, const DB::Schema::Ptr &schema, int err, uint64_t req_id)
Definition: MngdColumns.cc:808
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::updated
void updated()
Definition: ColumnUpdate.cc:43
SWC::Manager::Column::Ptr
std::shared_ptr< Column > Ptr
Definition: Column.h:24
SWC::Comm::Protocol::Rgr::Req::ColumnUpdate::req_id
uint64_t req_id
Definition: ColumnUpdate.h:40
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
ColumnUpdate.h
SWC::Comm::Protocol::Rgr::SCHEMA_UPDATE
@ SCHEMA_UPDATE
Definition: Commands.h:29
SWC::Env::Mngr::rangers
static SWC_CAN_INLINE Manager::Rangers * rangers() noexcept
Definition: MngrEnv.h:69