SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Committer.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_db_client_Query_Update_Committer_h
8 #define swcdb_db_client_Query_Update_Committer_h
9 
10 
12 #include "swcdb/db/Types/Range.h"
16 
17 
18 namespace SWC { namespace client { namespace Query {
19 
21 namespace Update {
22 
23 
24 
25 class Committer final : public std::enable_shared_from_this<Committer> {
26  public:
27 
29  static void execute(const Handlers::Base::Ptr& hdlr,
31  Ptr(new Committer(
32  DB::Types::Range::MASTER,
34  hdlr
35  ))->locate_on_manager();
36  }
37 
38  typedef std::shared_ptr<Committer> Ptr;
42  const cid_t cid;
47  const rid_t rid;
49 
51  const cid_t cid,
55  const ReqBase::Ptr& parent=nullptr,
56  const rid_t rid=0) noexcept;
57 
58  Committer(const DB::Types::Range type,
59  const cid_t cid,
60  Handlers::Base::Column* colp,
61  const DB::Cell::Key::Ptr& key_start,
62  const Handlers::Base::Ptr& hdlr,
63  const ReqBase::Ptr& parent,
64  const rid_t rid,
65  const DB::Cell::Key& key_finish);
66 
67  Committer(const Committer&) = delete;
68 
69  Committer& operator=(const Committer&) = delete;
70 
71  ~Committer() noexcept;
72 
74  bool valid() noexcept {
75  return hdlr->valid();
76  }
77 
79  Clients::Ptr& get_clients() noexcept {
80  return hdlr->clients;
81  }
82 
84  Profiling& get_profile() noexcept {
85  return hdlr->profile;
86  }
87 
88  void print(std::ostream& out);
89 
90  void locate_on_manager();
91 
92  private:
93 
94  void located_on_manager(
95  const ReqBase::Ptr& base,
97 
98  void locate_on_ranger(Comm::EndPoints&& endpoints, int64_t revision=0);
99 
100  void located_on_ranger(
101  const Comm::EndPoints& endpoints,
102  const ReqBase::Ptr& base,
104 
105  void resolve_on_manager();
106 
107  void located_ranger(
108  const ReqBase::Ptr& base,
110 
111  void proceed_on_ranger(
112  const ReqBase::Ptr& base,
114 
115  void commit_data(
116  const Comm::EndPoints& endpoints,
117  const ReqBase::Ptr& base);
118 
119  void committed_data(
120  const DynamicBuffer& cells_buff,
121  const ReqBase::Ptr& base,
122  const ReqBase::Ptr& req,
124 
125 };
126 
127 
128 }}}}
129 
130 
131 #ifdef SWC_IMPL_SOURCE
133 #endif
134 
135 
136 #endif // swcdb_db_client_Query_Update_Committer_h
SWC::client::Query::Update::Committer::located_on_manager
void located_on_manager(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Committer.cc:174
SWC::client::Query::Update::Committer::get_profile
SWC_CAN_INLINE Profiling & get_profile() noexcept
Definition: Committer.h:84
SWC::client::Query::Update::Committer::hdlr
Handlers::Base::Ptr hdlr
Definition: Committer.h:45
SWC::client::Query::Update::Committer::committed_data
void committed_data(const DynamicBuffer &cells_buff, const ReqBase::Ptr &base, const ReqBase::Ptr &req, const Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp &rsp)
Definition: Committer.cc:529
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp
Definition: RgrGet.h:53
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp
Definition: RangeLocate.h:59
SWC::client::Query::Update::Committer::Ptr
std::shared_ptr< Committer > Ptr
Definition: Committer.h:38
SWC::client::Query::Update::Handlers::Base::Ptr
std::shared_ptr< Base > Ptr
Definition: Base.h:27
SWC::client::Query::Update::Committer::rid
const rid_t rid
Definition: Committer.h:47
SWC::Comm::client::ConnQueueReqBase
Definition: ClientConnQueue.h:22
SWC::client::Query::Update::Committer::locate_on_manager
void locate_on_manager()
Definition: Committer.cc:92
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
RgrGet.h
SWC::DB::Types::Column
Column
Definition: Column.h:18
SWC::client::Query::Update::Committer::located_ranger
void located_ranger(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Committer.cc:382
SWC::client::Query::Update::Committer::get_clients
SWC_CAN_INLINE Clients::Ptr & get_clients() noexcept
Definition: Committer.h:79
SWC::client::Query::Update::Committer::valid
SWC_CAN_INLINE bool valid() noexcept
Definition: Committer.h:74
SWC::client::Query::Update::Committer::key_finish
const DB::Cell::Key key_finish
Definition: Committer.h:48
SWC::DB::Cell::Key
Definition: CellKey.h:24
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp
Definition: RangeQueryUpdate.h:48
SWC::client::Query::Update::Committer::Committer
Committer(const DB::Types::Range type, const cid_t cid, Handlers::Base::Column *colp, const DB::Cell::Key::Ptr &key_start, const Handlers::Base::Ptr &hdlr, const ReqBase::Ptr &parent=nullptr, const rid_t rid=0) noexcept
Definition: Committer.cc:30
SWC::client::Query::Update::Committer::workload
Core::CompletionCounter< uint32_t > workload
Definition: Committer.h:41
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
Range.h
SWC::client::Query::Update::Committer
Definition: Committer.h:25
RangeQueryUpdate.h
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
RangeLocate.h
SWC::client::Query::Update::Committer::commit_data
void commit_data(const Comm::EndPoints &endpoints, const ReqBase::Ptr &base)
Definition: Committer.cc:469
SWC::Core::BufferDyn< StaticBuffer >
SWC::Core::CompletionCounter< uint32_t >
SWC::client::Query::Update::Handlers::Base::Column
Definition: Base.h:30
SWC::client::Query::Update::Handlers::Base::Column::get_cid
virtual cid_t get_cid() const noexcept=0
SWC::client::Query::Update::Committer::resolve_on_manager
void resolve_on_manager()
Definition: Committer.cc:344
SWC::client::Query::Update::Committer::master_cid
const cid_t master_cid
Definition: Committer.h:40
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::client::Query::Update::Committer::execute
static SWC_CAN_INLINE void execute(const Handlers::Base::Ptr &hdlr, Handlers::Base::Column *colp)
Definition: Committer.h:29
SWC::Core::Vector< EndPoint >
SWC::client::Query::Profiling
Definition: Profiling.h:24
SWC::client::Query::Update::Handlers::Base::Column::get_first_key
virtual DB::Cell::Key::Ptr get_first_key()=0
SWC::client::Query::Update::Committer::cid
const cid_t cid
Definition: Committer.h:42
SWC::client::Query::Update::Committer::colp
Handlers::Base::Column * colp
Definition: Committer.h:43
SWC::rid_t
uint64_t rid_t
Definition: Identifiers.h:17
Base.h
SWC::client::Query::Update::Committer::key_start
DB::Cell::Key::Ptr key_start
Definition: Committer.h:44
SWC::client::Query::Update::Committer::locate_on_ranger
void locate_on_ranger(Comm::EndPoints &&endpoints, int64_t revision=0)
Definition: Committer.cc:237
SWC::client::Query::Update::Committer::parent
ReqBase::Ptr parent
Definition: Committer.h:46
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::DB::Cell::Key::Ptr
std::shared_ptr< Key > Ptr
Definition: CellKey.h:27
SWC::DB::Types::Range
Range
Definition: Range.h:14
SWC::client::Query::Update::Committer::located_on_ranger
void located_on_ranger(const Comm::EndPoints &endpoints, const ReqBase::Ptr &base, const Comm::Protocol::Rgr::Params::RangeLocateRsp &rsp)
Definition: Committer.cc:285
SWC::client::Query::Update::Committer::print
void print(std::ostream &out)
Definition: Committer.cc:63
SWC::client::Query::Update::Committer::type
const DB::Types::Range type
Definition: Committer.h:39
Committer.cc
SWC::client::Query::Update::Committer::proceed_on_ranger
void proceed_on_ranger(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Committer.cc:422