SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RangeLocate.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_rgr_params_RangeLocate_h
7 #define swcdb_db_protocol_rgr_params_RangeLocate_h
8 
9 
10 #include "swcdb/core/Exception.h"
12 #include "swcdb/db/Cells/CellKey.h"
14 
15 
16 namespace SWC { namespace Comm { namespace Protocol {
17 namespace Rgr { namespace Params {
18 
19 class RangeLocateReq final : public Serializable {
20  public:
21 
22  static const uint8_t CURRENT_RANGE = 0x01;
23  static const uint8_t NEXT_RANGE = 0x02;
24  static const uint8_t COMMIT = 0x04;
25  static const uint8_t RANGE_END_REST = 0x08;
26  static const uint8_t KEY_EQUAL = 0x10;
27  static const uint8_t HAVE_REVISION = 0x20;
28 
30  RangeLocateReq(cid_t a_cid=0, rid_t a_rid=0) noexcept
31  : cid(a_cid), rid(a_rid),
33  flags(0), revision() {
34  }
35 
37  ~RangeLocateReq() noexcept { }
38 
39  void print(std::ostream& out) const;
40 
44  uint8_t flags;
45  int64_t revision;
46 
47  private:
48 
49  size_t SWC_PURE_FUNC internal_encoded_length() const override;
50 
51  void internal_encode(uint8_t** bufp) const override;
52 
53  void internal_decode(const uint8_t** bufp, size_t* remainp) override;
54 
55 };
56 
57 
58 
59 class RangeLocateRsp final : public Serializable {
60  public:
61 
63  RangeLocateRsp(int a_err = Error::OK) noexcept
64  : err(a_err), cid(0), rid(0),
65  range_end(), range_begin() {
66  }
67 
68  RangeLocateRsp(int err, const uint8_t* ptr, size_t remain) noexcept;
69 
71  ~RangeLocateRsp() noexcept { }
72 
73  void print(std::ostream& out) const;
74 
75  int err;
80 
81  private:
82 
83  size_t SWC_PURE_FUNC internal_encoded_length() const override;
84 
85  void internal_encode(uint8_t** bufp) const override;
86 
87  void internal_decode(const uint8_t** bufp, size_t* remainp) override;
88 
89 };
90 
91 
92 }}}}}
93 
94 
95 #ifdef SWC_IMPL_SOURCE
97 #endif
98 
99 #endif // swcdb_db_protocol_rgr_params_RangeLocate_h
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::internal_encoded_length
size_t SWC_PURE_FUNC internal_encoded_length() const override
Definition: RangeLocate.cc:91
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::cid
cid_t cid
Definition: RangeLocate.h:76
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::range_begin
DB::Cell::Key range_begin
Definition: RangeLocate.h:43
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp
Definition: RangeLocate.h:59
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::NEXT_RANGE
static const uint8_t NEXT_RANGE
Definition: RangeLocate.h:23
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::range_end
DB::Cell::Key range_end
Definition: RangeLocate.h:78
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::HAVE_REVISION
static const uint8_t HAVE_REVISION
Definition: RangeLocate.h:27
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::rid
rid_t rid
Definition: RangeLocate.h:77
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::print
void print(std::ostream &out) const
Definition: RangeLocate.cc:16
SWC::DB::Cell::Key
Definition: CellKey.h:24
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: RangeLocate.cc:52
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: RangeLocate.cc:101
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::internal_encoded_length
size_t SWC_PURE_FUNC internal_encoded_length() const override
Definition: RangeLocate.cc:28
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::print
void print(std::ostream &out) const
Definition: RangeLocate.cc:80
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::~RangeLocateRsp
SWC_CAN_INLINE ~RangeLocateRsp() noexcept
Definition: RangeLocate.h:71
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::RANGE_END_REST
static const uint8_t RANGE_END_REST
Definition: RangeLocate.h:25
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::range_end
DB::Cell::Key range_end
Definition: RangeLocate.h:43
Exception.h
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::range_begin
DB::Cell::Key range_begin
Definition: RangeLocate.h:79
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::range_offset
DB::Cell::Key range_offset
Definition: RangeLocate.h:43
SWC_PURE_FUNC
#define SWC_PURE_FUNC
Definition: Compat.h:108
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq
Definition: RangeLocate.h:19
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::~RangeLocateReq
SWC_CAN_INLINE ~RangeLocateReq() noexcept
Definition: RangeLocate.h:37
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::RangeLocateRsp
SWC_CAN_INLINE RangeLocateRsp(int a_err=Error::OK) noexcept
Definition: RangeLocate.h:63
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::rid
rid_t rid
Definition: RangeLocate.h:42
SWC::Comm::Serializable
Definition: Serializable.h:18
Identifiers.h
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::flags
uint8_t flags
Definition: RangeLocate.h:44
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::cid
cid_t cid
Definition: RangeLocate.h:41
Serializable.h
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::revision
int64_t revision
Definition: RangeLocate.h:45
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: RangeLocate.cc:111
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: RangeLocate.cc:40
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::err
int err
Definition: RangeLocate.h:75
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::KEY_EQUAL
static const uint8_t KEY_EQUAL
Definition: RangeLocate.h:26
SWC::rid_t
uint64_t rid_t
Definition: Identifiers.h:17
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::COMMIT
static const uint8_t COMMIT
Definition: RangeLocate.h:24
RangeLocate.cc
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::RangeLocateReq
SWC_CAN_INLINE RangeLocateReq(cid_t a_cid=0, rid_t a_rid=0) noexcept
Definition: RangeLocate.h:30
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::CURRENT_RANGE
static const uint8_t CURRENT_RANGE
Definition: RangeLocate.h:22
CellKey.h