SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
HeaderBufferInfo.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_core_comm_HeaderBufferInfo_h
7 #define swcdb_core_comm_HeaderBufferInfo_h
8 
9 
11 #include "swcdb/core/Encoder.h"
13 #include "swcdb/core/Checksum.h"
14 
15 
16 namespace SWC { namespace Comm {
17 
18 
19 struct BufferInfo final {
20 
22  BufferInfo() noexcept
23  : size(0),
25  chksum(0),
26  encoder(Core::Encoder::Type::PLAIN) {
27  }
28 
30  void reset() noexcept {
31  size = size_plain = chksum = 0;
32  encoder = Core::Encoder::Type::PLAIN;
33  }
34 
36  uint8_t encoded_length() const noexcept {
37  uint8_t sz = Serialization::encoded_length_vi32(size) + 5;
38  if(encoder != Core::Encoder::Type::PLAIN)
40  return sz;
41  }
42 
44  void encode(uint8_t** bufp) const {
46  Serialization::encode_i8(bufp, uint8_t(encoder));
47  if(encoder != Core::Encoder::Type::PLAIN)
50  }
51 
53  void decode(const uint8_t** bufp, size_t* remainp) {
54  size = Serialization::decode_vi32(bufp, remainp);
56  if(encoder != Core::Encoder::Type::PLAIN)
57  size_plain = Serialization::decode_vi32(bufp, remainp);
58  chksum = Serialization::decode_i32(bufp, remainp);
59  }
60 
62 
63  void decode(int& err, StaticBuffer& data) const;
64 
65  void print(std::ostream& out) const;
66 
67  uint32_t size;
68  uint32_t size_plain;
69  uint32_t chksum;
71 
72 } __attribute__((packed));
73 
74 
75 }}
76 
77 
78 
79 #ifdef SWC_IMPL_SOURCE
81 #endif
82 
83 #endif // swcdb_core_comm_HeaderBufferInfo_h
SWC::Comm::BufferInfo::size_plain
uint32_t size_plain
Buffer set if Encoder not PLAIN.
Definition: HeaderBufferInfo.h:68
SWC::Comm::BufferInfo
Definition: HeaderBufferInfo.h:19
SWC::Comm::BufferInfo::encode
SWC_CAN_INLINE void encode(uint8_t **bufp) const
Definition: HeaderBufferInfo.h:44
data
T data
Definition: BitFieldInt.h:1
SWC::Core::Encoder::Type
Type
Definition: Encoder.h:28
SWC::Serialization::encoded_length_vi32
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi32(uint32_t val) noexcept
Definition: Serialization.h:234
SWC::Serialization::encode_i32
SWC_CAN_INLINE void encode_i32(uint8_t **bufp, uint32_t val) noexcept
Definition: Serialization.h:138
SWC::Comm::BufferInfo::chksum
uint32_t chksum
Buffer checksum.
Definition: HeaderBufferInfo.h:69
SWC::Comm::__attribute__
struct SWC::Comm::Header __attribute__((packed))
SWC::Comm::BufferInfo::BufferInfo
SWC_CAN_INLINE BufferInfo() noexcept
Definition: HeaderBufferInfo.h:22
SWC::Comm::BufferInfo::encoder
Core::Encoder::Type encoder
Buffer Encoder.
Definition: HeaderBufferInfo.h:70
SWC::Serialization::encode_i8
constexpr SWC_CAN_INLINE void encode_i8(uint8_t **bufp, uint8_t val) noexcept
Definition: Serialization.h:85
SWC::Comm::BufferInfo::reset
SWC_CAN_INLINE void reset() noexcept
Definition: HeaderBufferInfo.h:30
SWC::Comm::BufferInfo::size
uint32_t size
Buffer size.
Definition: HeaderBufferInfo.h:67
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Core::Buffer
Definition: Buffer.h:18
Compat.h
Serialization.h
SWC::Comm::BufferInfo::decode
SWC_CAN_INLINE void decode(const uint8_t **bufp, size_t *remainp)
Definition: HeaderBufferInfo.h:53
HeaderBufferInfo.cc
Checksum.h
SWC::Comm::BufferInfo::print
void print(std::ostream &out) const
Definition: HeaderBufferInfo.cc:48
SWC::DB::Types::Encoder
Core::Encoder::Type Encoder
Definition: Encoder.h:15
SWC::Comm::BufferInfo::encoded_length
SWC_CAN_INLINE uint8_t encoded_length() const noexcept
Definition: HeaderBufferInfo.h:36
SWC::Serialization::encode_vi32
constexpr SWC_CAN_INLINE void encode_vi32(uint8_t **bufp, uint32_t val)
Definition: Serialization.h:243
Encoder.h
SWC::Serialization::decode_i8
constexpr SWC_CAN_INLINE uint8_t decode_i8(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:91
SWC::Serialization::decode_i32
SWC_CAN_INLINE uint32_t decode_i32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:143
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254