SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnsUnload.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_ColumnsUnload_h
7 #define swcdb_db_protocol_rgr_params_ColumnsUnload_h
8 
10 
11 
12 namespace SWC { namespace Comm { namespace Protocol {
13 namespace Rgr { namespace Params {
14 
15 
16 class ColumnsUnloadReq final : public Serializable {
17  public:
18 
21  cid_t a_cid_end = DB::Schema::NO_CID) noexcept
22  : cid_begin(a_cid_begin), cid_end(a_cid_end) {
23  }
24 
25  //~ColumnsUnloadReq() { }
26 
29 
30  protected:
31 
32  size_t internal_encoded_length() const override {
35  }
36 
37  void internal_encode(uint8_t** bufp) const override {
40  }
41 
42  void internal_decode(const uint8_t** bufp, size_t* remainp) override {
43  cid_begin = Serialization::decode_vi64(bufp, remainp);
44  cid_end = Serialization::decode_vi64(bufp, remainp);
45  }
46 
47 };
48 
49 
50 
51 
52 
53 class ColumnsUnloadRsp final : public Serializable {
54  public:
55 
57  ColumnsUnloadRsp(int a_err = Error::OK) noexcept : err(a_err), columns() { }
58 
60  ~ColumnsUnloadRsp() noexcept { }
61 
62  int err;
63  std::unordered_map<cid_t, rids_t> columns;
64 
65  private:
66 
67  size_t SWC_PURE_FUNC internal_encoded_length() const override {
69  if(err)
70  return sz;
72  for(auto it = columns.cbegin(); it != columns.cend(); ++it) {
73  sz += Serialization::encoded_length_vi64(it->first);
74  sz += Serialization::encoded_length_vi64(it->second.size());
75  for(auto& r : it->second)
77  }
78  return sz;
79  }
80 
81  void internal_encode(uint8_t** bufp) const override {
83  if(err)
84  return;
85  Serialization::encode_vi64(bufp, columns.size());
86  for(auto it = columns.cbegin(); it != columns.cend(); ++it) {
87  Serialization::encode_vi64(bufp, it->first);
88  Serialization::encode_vi64(bufp, it->second.size());
89  for(auto& r : it->second)
91  }
92  }
93 
94  void internal_decode(const uint8_t** bufp, size_t* remainp) override {
95  err = Serialization::decode_vi32(bufp, remainp);
96  if(err)
97  return;
98  cid_t cid;
99  for(size_t cids=Serialization::decode_vi64(bufp, remainp); cids; --cids) {
100  cid = Serialization::decode_vi64(bufp, remainp);
101  auto& rids = columns[cid];
102  rids.resize(Serialization::decode_vi64(bufp, remainp));
103  for(auto& rid : rids)
104  rid = Serialization::decode_vi64(bufp, remainp);
105  }
106  }
107 
108 };
109 
110 
111 }}}}}
112 
113 #endif // swcdb_db_protocol_rgr_params_ColumnsUnload_h
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq
Definition: ColumnsUnload.h:16
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: ColumnsUnload.h:37
SWC::DB::SchemaPrimitives::NO_CID
static constexpr const cid_t NO_CID
Definition: Schema.h:25
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq::internal_encoded_length
size_t internal_encoded_length() const override
Definition: ColumnsUnload.h:32
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::ColumnsUnloadRsp::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: ColumnsUnload.h:81
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq::cid_begin
cid_t cid_begin
Definition: ColumnsUnload.h:27
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq::ColumnsUnloadReq
SWC_CAN_INLINE ColumnsUnloadReq(cid_t a_cid_begin=DB::Schema::NO_CID, cid_t a_cid_end=DB::Schema::NO_CID) noexcept
Definition: ColumnsUnload.h:20
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: ColumnsUnload.h:42
SWC_PURE_FUNC
#define SWC_PURE_FUNC
Definition: Compat.h:108
SWC::Comm::Serializable
Definition: Serializable.h:18
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: ColumnsUnload.h:94
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::ColumnsUnloadRsp::ColumnsUnloadRsp
SWC_CAN_INLINE ColumnsUnloadRsp(int a_err=Error::OK) noexcept
Definition: ColumnsUnload.h:57
Serializable.h
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::~ColumnsUnloadRsp
SWC_CAN_INLINE ~ColumnsUnloadRsp() noexcept
Definition: ColumnsUnload.h:60
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::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::err
int err
Definition: ColumnsUnload.h:62
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::columns
std::unordered_map< cid_t, rids_t > columns
Definition: ColumnsUnload.h:63
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::internal_encoded_length
size_t SWC_PURE_FUNC internal_encoded_length() const override
Definition: ColumnsUnload.h:67
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp
Definition: ColumnsUnload.h:53
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadReq::cid_end
cid_t cid_end
Definition: ColumnsUnload.h:28
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254