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.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 
6 
9 
10 
11 namespace SWC { namespace Comm { namespace Protocol {
12 namespace Rgr { namespace Params {
13 
14 
15 
16 void RangeLocateReq::print(std::ostream& out) const {
17  out << "RangeLocateReq(cid=" << cid << " rid=" << rid
18  << " flags=" << int(flags);
19  range_begin.print(out << " RangeBegin");
20  range_end.print(out << " RangeEnd");
22  range_offset.print(out << " RangeOffset");
23  if(flags & HAVE_REVISION)
24  out << " revision=" << revision;
25  out << ')';
26 }
27 
33  + 1
36  + (flags & HAVE_REVISION
38 }
39 
40 void RangeLocateReq::internal_encode(uint8_t** bufp) const {
43  range_begin.encode(bufp);
44  range_end.encode(bufp);
47  range_offset.encode(bufp);
48  if(flags & HAVE_REVISION)
50 }
51 
52 void RangeLocateReq::internal_decode(const uint8_t** bufp, size_t* remainp) {
53  cid = Serialization::decode_vi64(bufp, remainp);
54  rid = Serialization::decode_vi64(bufp, remainp);
55  range_begin.decode(bufp, remainp, false);
56  range_end.decode(bufp, remainp, false);
57  flags = Serialization::decode_i8(bufp, remainp);
59  range_offset.decode(bufp, remainp, false);
60  if(flags & HAVE_REVISION)
61  revision = Serialization::decode_vi64(bufp, remainp);
62 }
63 
64 
65 
66 
68  const uint8_t *ptr, size_t remain) noexcept
69  : err(a_err), cid(0), rid(0),
70  range_end(), range_begin() {
71  if(!err) try {
72  decode(&ptr, &remain);
73  } catch(...) {
75  err = e.code();
77  }
78 }
79 
80 void RangeLocateRsp::print(std::ostream& out) const {
81  out << "RangeLocated(";
82  Error::print(out, err);
83  if(!err) {
84  out << " cid=" << cid << " rid=" << rid;
85  range_begin.print(out << " RangeBegin");
86  range_end.print(out << " RangeEnd");
87  }
88  out << ')';
89 }
90 
93  + (err ? 0 : (
98  ) );
99 }
100 
101 void RangeLocateRsp::internal_encode(uint8_t** bufp) const {
103  if(!err) {
106  range_end.encode(bufp);
107  range_begin.encode(bufp);
108  }
109 }
110 
111 void RangeLocateRsp::internal_decode(const uint8_t** bufp, size_t* remainp) {
112  if(!(err = Serialization::decode_vi32(bufp, remainp))) {
113  cid = Serialization::decode_vi64(bufp, remainp);
114  rid = Serialization::decode_vi64(bufp, remainp);
115  range_end.decode(bufp, remainp, false);
116  range_begin.decode(bufp, remainp, false);
117  }
118 }
119 
120 
121 
122 }}}}}
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::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_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::range_begin
DB::Cell::Key range_begin
Definition: RangeLocate.h:43
SWC::Serialization::encoded_length_vi32
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi32(uint32_t val) noexcept
Definition: Serialization.h:234
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::Serialization::encode_i8
constexpr SWC_CAN_INLINE void encode_i8(uint8_t **bufp, uint8_t val) noexcept
Definition: Serialization.h:85
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::DB::Cell::Key::decode
void decode(const uint8_t **bufp, size_t *remainp, bool owner)
Definition: CellKey.h:337
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
decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: HeaderBufferInfo.h:33
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::range_end
DB::Cell::Key range_end
Definition: RangeLocate.h:43
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::range_begin
DB::Cell::Key range_begin
Definition: RangeLocate.h:79
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::Rgr::Params::RangeLocateReq::range_offset
DB::Cell::Key range_offset
Definition: RangeLocate.h:43
RangeLocate.h
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
Serialization.h
SWC::Serialization::encoded_length_vi64
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi64(uint64_t val) noexcept
Definition: Serialization.h:272
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::flags
uint8_t flags
Definition: RangeLocate.h:44
SWC::DB::Cell::Key::encoded_length
constexpr uint32_t encoded_length() const noexcept
Definition: CellKey.h:323
SWC::LOG_ERROR
@ LOG_ERROR
Definition: Logger.h:32
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::cid
cid_t cid
Definition: RangeLocate.h:41
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::Serialization::decode_vi64
constexpr SWC_CAN_INLINE uint64_t decode_vi64(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:302
SWC::Serialization::encode_vi32
constexpr SWC_CAN_INLINE void encode_vi32(uint8_t **bufp, uint32_t val)
Definition: Serialization.h:243
SWC::DB::Cell::Key::print
void print(std::ostream &out) const
Definition: CellKey.cc:182
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Error::print
void print(std::ostream &out, int err)
Definition: Error.cc:191
SWC::Serialization::decode_i8
constexpr SWC_CAN_INLINE uint8_t decode_i8(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:91
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::CURRENT_RANGE
static const uint8_t CURRENT_RANGE
Definition: RangeLocate.h:22
SWC::Error::Exception
Definition: Exception.h:21
SWC::DB::Cell::Key::encode
void encode(uint8_t **bufp) const
Definition: CellKey.h:328
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254