SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnList.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 Mngr { namespace Params {
13 
14 
15 
16 
19  sz += patterns.names.size(); // i8-pattern.comp
20  for(auto& pattern : patterns.names)
21  sz += Serialization::encoded_length_bytes(pattern.size());
22  ++sz;
25  sz += patterns.tags.size(); // i8-tag.comp
26  for(auto& tag : patterns.tags)
27  sz += Serialization::encoded_length_bytes(tag.size());
28  }
29  return sz;
30 }
31 
32 void ColumnListReq::internal_encode(uint8_t** bufp) const {
34  for(auto& pattern : patterns.names) {
35  Serialization::encode_i8(bufp, pattern.comp);
36  Serialization::encode_bytes(bufp, pattern.c_str(), pattern.size());
37  }
38 
40  bufp,
44  );
47  for(auto& tag : patterns.tags) {
48  Serialization::encode_i8(bufp, tag.comp);
49  Serialization::encode_bytes(bufp, tag.c_str(), tag.size());
50  }
51  }
52 }
53 
54 void ColumnListReq::internal_decode(const uint8_t** bufp, size_t* remainp) {
55  if(uint32_t sz = Serialization::decode_vi32(bufp, remainp)) {
57  for(; sz; --sz) {
58  auto comp = Condition::Comp(Serialization::decode_i8(bufp, remainp));
60  comp, Serialization::decode_bytes_string(bufp, remainp));
61  }
62  }
63 
66  if(uint32_t sz = Serialization::decode_vi32(bufp, remainp)) {
67  patterns.tags.reserve(sz);
68  for(; sz; --sz) {
69  auto comp = Condition::Comp(Serialization::decode_i8(bufp, remainp));
71  comp, Serialization::decode_bytes_string(bufp, remainp));
72  }
73  }
74  }
75 }
76 
77 
78 
79 
80 
84  for (auto schema : schemas)
85  sz += schema->encoded_length();
86  return sz;
87 }
88 
89 void ColumnListRsp::internal_encode(uint8_t** bufp) const {
92  for(auto& schema : schemas)
93  schema->encode(bufp);
94 }
95 
96 void ColumnListRsp::internal_decode(const uint8_t** bufp, size_t* remainp) {
97  expected = Serialization::decode_vi64(bufp, remainp);
98  if(size_t sz = Serialization::decode_vi64(bufp, remainp)) {
99  schemas.reserve(sz);
100  for(; sz; --sz)
101  schemas.emplace_back(new DB::Schema(bufp, remainp));
102  }
103 }
104 
105 
106 }}}}}
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: ColumnList.cc:89
SWC::DB::Schemas::TagsPattern::comp
Condition::Comp comp
Definition: Schemas.h:87
SWC::Comm::Protocol::Mngr::Params::ColumnListReq::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: ColumnList.cc:54
SWC::Serialization::encoded_length_bytes
constexpr SWC_CAN_INLINE size_t encoded_length_bytes(size_t len) noexcept
Definition: Serialization.h:537
SWC::Comm::Protocol::Mngr::Params::ColumnListReq::patterns
DB::Schemas::SelectorPatterns patterns
Definition: ColumnList.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::Mngr::Params::ColumnListRsp::internal_encoded_length
size_t internal_encoded_length() const override
Definition: ColumnList.cc:81
SWC::DB::Schemas::SelectorPatterns::names
NamePatterns names
Definition: Schemas.h:101
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::Mngr::Params::ColumnListReq::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: ColumnList.cc:32
SWC::Serialization::encode_bytes
SWC_CAN_INLINE void encode_bytes(uint8_t **bufp, const void *data, size_t len)
Definition: Serialization.h:542
SWC::DB::Schema
Definition: Schema.h:182
SWC::Comm::Protocol::Mngr::Params::ColumnListReq::internal_encoded_length
size_t SWC_PURE_FUNC internal_encoded_length() const override
Definition: ColumnList.cc:17
SWC::Condition::Comp
Comp
Definition: Comparators.h:27
SWC::Core::Vector::empty
constexpr SWC_CAN_INLINE bool empty() const noexcept
Definition: Vector.h:168
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Condition::EQ
@ EQ
Definition: Comparators.h:32
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::Condition::NONE
@ NONE
Definition: Comparators.h:28
SWC::DB::Schemas::SelectorPatterns::tags
TagsPattern tags
Definition: Schemas.h:102
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: ColumnList.cc:96
SWC::Serialization::decode_bytes_string
SWC_CAN_INLINE std::string decode_bytes_string(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:558
SWC::Serialization::decode_vi64
constexpr SWC_CAN_INLINE uint64_t decode_vi64(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:302
ColumnList.h
SWC::Serialization::encode_vi32
constexpr SWC_CAN_INLINE void encode_vi32(uint8_t **bufp, uint32_t val)
Definition: Serialization.h:243
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp::expected
uint64_t expected
Definition: ColumnList.h:55
SWC::Serialization::decode_i8
constexpr SWC_CAN_INLINE uint8_t decode_i8(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:91
SWC::Core::Vector::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
SWC::Core::Vector::emplace_back
SWC_CAN_INLINE reference emplace_back(ArgsT &&... args)
Definition: Vector.h:349
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp::schemas
DB::SchemasVec schemas
Definition: ColumnList.h:56
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254