SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnUpdate.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_manager_Protocol_mngr_params_ColumnUpdate_h
7 #define swcdb_manager_Protocol_mngr_params_ColumnUpdate_h
8 
10 
11 namespace SWC { namespace Comm { namespace Protocol {
12 namespace Mngr { namespace Params {
13 
14 
15 class ColumnUpdate final : public Serializable {
16  public:
17 
19  ColumnUpdate() noexcept
20  : function(), id(),
21  columns(),
22  cid_begin(), cid_end(), total(),
23  schema(), err() {
24  }
25 
28  const DB::Schema::Ptr& a_schema,
29  int a_err, uint64_t a_id) noexcept
30  : function(a_function), id(a_id),
31  columns(),
32  cid_begin(), cid_end(), total(),
33  schema(a_schema), err(a_err) {
34  }
35 
38  cid_t a_cid_begin, cid_t a_cid_end, uint64_t a_total,
39  cids_t&& a_columns) noexcept
40  : function(a_function), id(0),
41  columns(std::move(a_columns)),
42  cid_begin(a_cid_begin), cid_end(a_cid_end), total(a_total),
43  schema(), err(Error::OK) {
44  }
45 
46  ~ColumnUpdate() noexcept { }
47 
48  void print(std::ostream& out) {
49  out << "ColumnUpdate(func=" << int(function)
50  << " id=" << id;
51  if(function == ColumnMng::Function::INTERNAL_EXPECT) {
52  out << " cid-begin=" << cid_begin
53  << " cid-end=" << cid_end
54  << " total=" << total
55  << " columns=[";
56  for(cid_t cid : columns)
57  out << cid << ',';
58  out << ']';
59 
60  } else {
61  schema->print(out << ' ');
62  Error::print(out << ' ', err);
63  }
64  out << ')';
65  }
66 
68  uint64_t id;
72  uint64_t total;
74  int err;
75 
76  private:
77 
78  size_t internal_encoded_length() const override {
79  size_t sz = 1 + Serialization::encoded_length_vi64(id);
80  switch(function) {
81  case ColumnMng::Function::INTERNAL_EXPECT: {
86  for(const cid_t cid : columns)
88  break;
89  }
90  default: {
91  sz += schema->encoded_length()
93  break;
94  }
95  }
96  return sz;
97  }
98 
99  void internal_encode(uint8_t** bufp) const override {
100  Serialization::encode_i8(bufp, function);
101  Serialization::encode_vi64(bufp, id);
102  switch(function) {
103  case ColumnMng::Function::INTERNAL_EXPECT: {
108  for(const cid_t cid : columns)
109  Serialization::encode_vi64(bufp, cid);
110  break;
111  }
112  default: {
113  schema->encode(bufp);
115  break;
116  }
117  }
118  }
119 
120  void internal_decode(const uint8_t** bufp, size_t* remainp) override {
121  function = ColumnMng::Function(Serialization::decode_i8(bufp, remainp));
122  id = Serialization::decode_vi64(bufp, remainp);
123  switch(function) {
124  case ColumnMng::Function::INTERNAL_EXPECT: {
125  cid_begin = Serialization::decode_vi64(bufp, remainp);
126  cid_end = Serialization::decode_vi64(bufp, remainp);
127  total = Serialization::decode_vi64(bufp, remainp);
128  columns.clear();
129  columns.resize(Serialization::decode_vi64(bufp, remainp));
130  for(auto& col : columns)
131  col = Serialization::decode_vi64(bufp, remainp);
132  break;
133  }
134  default : {
135  schema.reset(new DB::Schema(bufp, remainp));
136  err = Serialization::decode_vi32(bufp, remainp);
137  break;
138  }
139  }
140  }
141 
142 };
143 
144 
145 }}}}}
146 
147 #endif // swcdb_manager_Protocol_mngr_params_ColumnUpdate_h
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate
Definition: ColumnUpdate.h:15
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::ColumnUpdate
SWC_CAN_INLINE ColumnUpdate() noexcept
Definition: ColumnUpdate.h:19
SWC::Core::Vector::resize
SWC_CAN_INLINE void resize(size_type sz, ArgsT &&... args)
Definition: Vector.h:308
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::ColumnUpdate
SWC_CAN_INLINE ColumnUpdate(ColumnMng::Function a_function, const DB::Schema::Ptr &a_schema, int a_err, uint64_t a_id) noexcept
Definition: ColumnUpdate.h:27
SWC::DB::Schema::Ptr
std::shared_ptr< Schema > Ptr
Definition: Schema.h:185
SWC::Core::Vector::clear
SWC_CAN_INLINE void clear() noexcept(_NoExceptDestructor)
Definition: Vector.h:120
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: ColumnUpdate.h:99
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::ColumnUpdate::cid_end
cid_t cid_end
Definition: ColumnUpdate.h:71
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::total
uint64_t total
Definition: ColumnUpdate.h:72
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::ColumnUpdate::cid_begin
cid_t cid_begin
Definition: ColumnUpdate.h:70
SWC::DB::Schema
Definition: Schema.h:182
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::columns
cids_t columns
Definition: ColumnUpdate.h:69
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::ColumnUpdate
SWC_CAN_INLINE ColumnUpdate(ColumnMng::Function a_function, cid_t a_cid_begin, cid_t a_cid_end, uint64_t a_total, cids_t &&a_columns) noexcept
Definition: ColumnUpdate.h:37
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: ColumnUpdate.h:120
SWC::Comm::Serializable
Definition: Serializable.h:18
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::~ColumnUpdate
~ColumnUpdate() noexcept
Definition: ColumnUpdate.h:46
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::Mngr::Params::ColumnMng::Function
Function
Definition: ColumnMng.h:21
Serializable.h
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Core::Vector< cid_t, cid_t >
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::print
void print(std::ostream &out)
Definition: ColumnUpdate.h:48
SWC::Serialization::decode_vi64
constexpr SWC_CAN_INLINE uint64_t decode_vi64(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:302
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::schema
DB::Schema::Ptr schema
Definition: ColumnUpdate.h:73
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::function
ColumnMng::Function function
Definition: ColumnUpdate.h:67
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::ColumnUpdate::err
int err
Definition: ColumnUpdate.h:74
SWC::Error::print
void print(std::ostream &out, int err)
Definition: Error.cc:191
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::internal_encoded_length
size_t internal_encoded_length() const override
Definition: ColumnUpdate.h:78
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::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254
SWC::Comm::Protocol::Mngr::Params::ColumnUpdate::id
uint64_t id
Definition: ColumnUpdate.h:68