SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
CellStoreBlockHeader.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 
8 
9 
10 namespace SWC { namespace Ranger { namespace CellStore { namespace Block {
11 
12 
13 
16  : offset_data(0),
17  interval(key_seq),
18  is_any(0),
20  size_plain(0),
21  size_enc(0),
22  cells_count(0),
23  checksum_data(0) {
24 }
25 
27 Header::Header(const Header& other)
28  : offset_data(other.offset_data),
29  interval(other.interval),
30  is_any(other.is_any),
31  encoder(other.encoder),
32  size_plain(other.size_plain),
33  size_enc(other.size_enc),
34  cells_count(other.cells_count),
35  checksum_data(other.checksum_data) {
36 }
37 
39 Header::Header(Header&& other) noexcept
40  : offset_data(other.offset_data),
41  interval(std::move(other.interval)),
42  is_any(other.is_any),
43  encoder(other.encoder),
44  size_plain(other.size_plain),
45  size_enc(other.size_enc),
46  cells_count(other.cells_count),
47  checksum_data(other.checksum_data) {
48 }
49 
51 void Header::encode(uint8_t** bufp) {
52  const uint8_t* base = *bufp;
53  Serialization::encode_i8(bufp, uint8_t(encoder));
57  if(size_enc)
59  else
61  Core::checksum_i32(base, *bufp, bufp);
62 }
63 
65 void Header::decode(const uint8_t** bufp, size_t* remainp) {
67  size_enc = Serialization::decode_i32(bufp, remainp);
68  size_plain = Serialization::decode_i32(bufp, remainp);
69  cells_count = Serialization::decode_i32(bufp, remainp);
71  // i32(checksum) remains
72 }
73 
78  + 2
83 }
84 
86 void Header::encode_idx(uint8_t** bufp) const {
88  interval.encode(bufp);
90  Serialization::encode_i8(bufp, uint8_t(encoder));
95 }
96 
98 void Header::decode_idx(const uint8_t** bufp, size_t* remainp) {
99  offset_data = Serialization::decode_vi64(bufp, remainp);
100  interval.decode(bufp, remainp, true);
101  is_any = Serialization::decode_i8(bufp, remainp);
103  size_enc = Serialization::decode_vi32(bufp, remainp);
104  size_plain = Serialization::decode_vi32(bufp, remainp);
105  cells_count = Serialization::decode_vi32(bufp, remainp);
106  checksum_data = Serialization::decode_vi32(bufp, remainp);
107 }
108 
109 void Header::print(std::ostream& out) const {
110  out << "offset=" << offset_data
111  << " encoder=" << Core::Encoder::to_string(encoder)
112  << " enc/size=" << size_enc << '/' << size_plain
113  << " cells_count=" << cells_count
114  << " checksum=" << checksum_data
115  << " is_any=" << int(is_any)
116  << ' ' << interval;
117 }
118 
119 
120 }}}} // namespace SWC::Ranger::CellStore::Block
121 
SWC::DB::Cells::Interval::encoded_length
size_t SWC_PURE_FUNC encoded_length() const noexcept
Definition: Interval.cc:117
SWC::Ranger::CellStore::Block::Header
Definition: CellStoreBlockHeader.h:23
SWC::Ranger::CellStore::Block::Header::decode_idx
void decode_idx(const uint8_t **bufp, size_t *remainp)
Definition: CellStoreBlockHeader.cc:98
CellStoreBlockHeader.h
SWC::Ranger::CellStore::Block::Header::is_any
uint8_t is_any
Definition: CellStoreBlockHeader.h:31
SWC::Ranger::CellStore::Block::Header::offset_data
uint64_t offset_data
Definition: CellStoreBlockHeader.h:29
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::DB::Cells::Interval::encode
void encode(uint8_t **ptr) const
Definition: Interval.cc:126
SWC::DB::Cells::Interval::decode
void decode(const uint8_t **ptr, size_t *remain, bool owner)
Definition: Interval.cc:135
SWC::Ranger::CellStore::Block::Header::interval
DB::Cells::Interval interval
Definition: CellStoreBlockHeader.h:30
SWC::Serialization::encode_i8
constexpr SWC_CAN_INLINE void encode_i8(uint8_t **bufp, uint8_t val) noexcept
Definition: Serialization.h:85
SWC::Ranger::CellStore::Block::Header::encoded_length_idx
size_t encoded_length_idx() const
Definition: CellStoreBlockHeader.cc:75
SWC::Ranger::CellStore::Block::Header::SIZE
static const uint8_t SIZE
Definition: CellStoreBlockHeader.h:24
SWC::DB::Types::KeySeq
KeySeq
Definition: KeySeq.h:13
encoder
Core::Encoder::Type encoder
Buffer Encoder.
Definition: HeaderBufferInfo.h:50
SWC::Ranger::CellStore::Block::Header::cells_count
uint32_t cells_count
Definition: CellStoreBlockHeader.h:36
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::DB::Cell::Serial::Value::UNKNOWN
@ UNKNOWN
Definition: CellValueSerialField.h:34
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
size_plain
uint32_t size_plain
Buffer set if Encoder not PLAIN.
Definition: HeaderBufferInfo.h:48
SWC::Ranger::CellStore::Block::Header::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: CellStoreBlockHeader.cc:65
SWC::Serialization::encoded_length_vi64
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi64(uint64_t val) noexcept
Definition: Serialization.h:272
SWC::Ranger::CellStore::Block::Header::checksum_data
uint32_t checksum_data
Definition: CellStoreBlockHeader.h:37
SWC::DB::Types::Encoder
Core::Encoder::Type Encoder
Definition: Encoder.h:15
SWC::Ranger::CellStore::Block::Header::encoder
DB::Types::Encoder encoder
Definition: CellStoreBlockHeader.h:33
SWC::Ranger::CellStore::Block::Header::encode_idx
void encode_idx(uint8_t **bufp) const
Definition: CellStoreBlockHeader.cc:86
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::Core::Encoder::to_string
const char *SWC_CONST_FUNC to_string(Type typ) noexcept
Definition: Encoder.cc:31
SWC::Core::checksum_i32
SWC_CAN_INLINE void checksum_i32(const uint8_t *start, size_t len, uint8_t **ptr) noexcept
Definition: Checksum.h:62
SWC::Ranger::CellStore::Block::Header::encode
void encode(uint8_t **bufp)
Definition: CellStoreBlockHeader.cc:51
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Ranger::CellStore::Block::Header::Header
Header(DB::Types::KeySeq key_seq) noexcept
Definition: CellStoreBlockHeader.cc:15
SWC::Ranger::CellStore::Block::Header::size_plain
uint32_t size_plain
Definition: CellStoreBlockHeader.h:34
SWC::Ranger::CellStore::Block::Header::size_enc
uint32_t size_enc
Definition: CellStoreBlockHeader.h:35
SWC::Serialization::decode_i8
constexpr SWC_CAN_INLINE uint8_t decode_i8(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:91
SWC::Ranger::CellStore::Block::Header::print
void print(std::ostream &out) const
Definition: CellStoreBlockHeader.cc:109
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