SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
BufferStream.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 
7 #ifndef swcdb_core_BufferStream_h
8 #define swcdb_core_BufferStream_h
9 
10 
11 #include "swcdb/core/Buffer.h"
12 #include "swcdb/core/Encoder.h"
13 #include <zstd.h>
14 
15 
16 namespace SWC { namespace Core {
17 
18 
19 
20 // STREAM-OUT
21 
23  public:
24  int error;
25 
27  BufferStreamOut(size_t a_pre_alloc = 12582912,
28  size_t a_commit_size = 8388608) noexcept
29  : error(Error::OK),
30  pre_alloc(a_pre_alloc),
31  commit_size(a_commit_size),
32  buffer() {
33  }
34 
36 
37  BufferStreamOut(const BufferStreamOut&) = delete;
38 
40 
42 
43  virtual ~BufferStreamOut() noexcept { }
44 
45  virtual bool SWC_PURE_FUNC empty() const;
46 
47  virtual bool SWC_PURE_FUNC full() const;
48 
49  virtual size_t SWC_PURE_FUNC available();
50 
51  virtual void add(const uint8_t* ptr, size_t len);
52 
53  virtual void get(StaticBuffer& output);
54 
55  protected:
56  size_t pre_alloc;
57  size_t commit_size;
59 };
60 
61 
62 
64  public:
65  BufferStreamOut_ZSTD_OnAdd(int level=0,
66  size_t pre_alloc = 12582912,
67  size_t commit_size = 8388608);
68 
70 
72 
74 
76 
77  virtual ~BufferStreamOut_ZSTD_OnAdd() noexcept;
78 
79  virtual bool SWC_PURE_FUNC empty() const override;
80 
81  virtual bool SWC_PURE_FUNC full() const override;
82 
83  virtual size_t SWC_PURE_FUNC available() override;
84 
85  virtual void add(const uint8_t* ptr, size_t len) override;
86 
87  virtual void get(StaticBuffer& output) override;
88 
89  private:
90  ZSTD_CStream* const cstream;
91  bool has_data;
92  size_t plain_size;
94  ZSTD_outBuffer out_buff;
95 
96 };
97 
98 
99 
101  public:
102  BufferStreamOut_ZSTD(int level=0,
103  size_t pre_alloc = 12582912,
104  size_t commit_size = 8388608);
105 
107 
109 
111 
113 
114  virtual ~BufferStreamOut_ZSTD() noexcept;
115 
116  virtual void get(StaticBuffer& output) override;
117 
118  private:
119  ZSTD_CStream* const cstream;
120 
121 };
122 
123 
124 
126  public:
129  size_t pre_alloc = 12582912,
130  size_t commit_size = 8388608);
131 
133 
135 
137 
139 
140  virtual ~BufferStreamOut_ENCODER() noexcept { }
141 
142  virtual void get(StaticBuffer& output) override;
143 
144 };
145 
146 
147 
148 
149 // STREAM-IN
150 
152  public:
153  int error;
154 
156  BufferStreamIn() noexcept : error(Error::OK), buffer() { }
157 
159 
160  BufferStreamIn(const BufferStreamIn&) = delete;
161 
163 
165 
166  virtual ~BufferStreamIn() noexcept { }
167 
168  virtual bool SWC_PURE_FUNC empty() const;
169 
170  virtual void add(StaticBuffer& inbuffer);
171 
172  virtual void put_back(const uint8_t* ptr, size_t len);
173 
174  virtual bool get(StaticBuffer& output);
175 
176  protected:
178 
179 };
180 
181 
182 
184  public:
186 
188 
190 
192 
194 
195  virtual ~BufferStreamIn_ZSTD() noexcept;
196 
197  virtual bool SWC_PURE_FUNC empty() const override;
198 
199  virtual void add(StaticBuffer& inbuffer) override;
200 
201  virtual bool get(StaticBuffer& output) override;
202 
203  private:
204  ZSTD_DStream* const dstream;
205  DynamicBuffer buffer_enc;
206  size_t offset;
207  bool frame_complete;
209 
210 };
211 
212 
213 
214 }} // namespace SWC::Core
215 
216 
217 
218 #ifdef SWC_IMPL_SOURCE
220 #endif
221 
222 
223 #endif // swcdb_core_BufferStream_h
SWC::Core::BufferStreamIn_ZSTD::operator=
BufferStreamIn_ZSTD & operator=(const BufferStreamIn_ZSTD &)=delete
SWC::Core::BufferStreamOut::commit_size
size_t commit_size
Definition: BufferStream.h:57
SWC::Core::BufferStreamOut::operator=
BufferStreamOut & operator=(const BufferStreamOut &)=delete
SWC::Core::BufferStreamOut::~BufferStreamOut
virtual ~BufferStreamOut() noexcept
Definition: BufferStream.h:43
SWC::Core::BufferStreamIn_ZSTD::BufferStreamIn_ZSTD
BufferStreamIn_ZSTD(BufferStreamIn_ZSTD &&)=delete
SWC::Core::BufferStreamOut_ENCODER
Definition: BufferStream.h:125
SWC::Core::BufferStreamOut::BufferStreamOut
SWC_CAN_INLINE BufferStreamOut(size_t a_pre_alloc=12582912, size_t a_commit_size=8388608) noexcept
Definition: BufferStream.h:27
SWC::Core::BufferStreamOut_ZSTD_OnAdd::BufferStreamOut_ZSTD_OnAdd
BufferStreamOut_ZSTD_OnAdd(const BufferStreamOut_ZSTD_OnAdd &)=delete
SWC::Core::BufferStreamOut::buffer
DynamicBuffer buffer
Definition: BufferStream.h:58
SWC::Core::BufferStreamOut_ZSTD_OnAdd::available
virtual size_t SWC_PURE_FUNC available() override
Definition: BufferStream.cc:65
SWC::Core::Encoder::Type
Type
Definition: Encoder.h:28
SWC::Core::BufferStreamIn::~BufferStreamIn
virtual ~BufferStreamIn() noexcept
Definition: BufferStream.h:166
SWC::Core::BufferStreamOut_ZSTD::BufferStreamOut_ZSTD
BufferStreamOut_ZSTD(const BufferStreamOut_ZSTD &)=delete
SWC::Core::BufferStreamOut_ENCODER::BufferStreamOut_ENCODER
BufferStreamOut_ENCODER(const BufferStreamOut_ENCODER &)=delete
SWC::Core::BufferStreamOut::pre_alloc
size_t pre_alloc
Definition: BufferStream.h:56
SWC::Core::BufferStreamOut::error
int error
Definition: BufferStream.h:24
SWC::Core::BufferStreamIn::buffer
DynamicBuffer buffer
Definition: BufferStream.h:177
SWC::Core::BufferStreamOut::empty
virtual bool SWC_PURE_FUNC empty() const
Definition: BufferStream.cc:16
SWC::Core::BufferStreamOut_ZSTD::operator=
BufferStreamOut_ZSTD & operator=(const BufferStreamOut_ZSTD &)=delete
SWC::Core::BufferStreamIn
Definition: BufferStream.h:151
SWC::Core::BufferStreamOut_ZSTD_OnAdd::BufferStreamOut_ZSTD_OnAdd
BufferStreamOut_ZSTD_OnAdd(BufferStreamOut_ZSTD_OnAdd &&)=delete
SWC::Core::BufferStreamOut::BufferStreamOut
BufferStreamOut(BufferStreamOut &&)=delete
SWC::Core::BufferStreamOut_ZSTD_OnAdd::has_data
bool has_data
Definition: BufferStream.h:91
SWC::Core::BufferStreamOut_ZSTD_OnAdd::add
virtual void add(const uint8_t *ptr, size_t len) override
Definition: BufferStream.cc:69
SWC::Core::BufferStreamOut_ENCODER::operator=
BufferStreamOut_ENCODER & operator=(const BufferStreamOut_ENCODER &)=delete
SWC::Core::BufferStreamOut_ZSTD::BufferStreamOut_ZSTD
BufferStreamOut_ZSTD(BufferStreamOut_ZSTD &&)=delete
encoder
Core::Encoder::Type encoder
Buffer Encoder.
Definition: HeaderBufferInfo.h:50
SWC::Core::BufferStreamOut_ENCODER::operator=
BufferStreamOut_ENCODER & operator=(BufferStreamOut_ENCODER &&)=delete
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC::Core::BufferStreamOut_ENCODER::~BufferStreamOut_ENCODER
virtual ~BufferStreamOut_ENCODER() noexcept
Definition: BufferStream.h:140
SWC::Core::BufferStreamOut_ZSTD_OnAdd::operator=
BufferStreamOut_ZSTD_OnAdd & operator=(const BufferStreamOut_ZSTD_OnAdd &)=delete
SWC::Core::BufferStreamOut::operator=
BufferStreamOut & operator=(BufferStreamOut &&)=delete
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Core::BufferStreamOut_ZSTD_OnAdd::empty
virtual bool SWC_PURE_FUNC empty() const override
Definition: BufferStream.cc:57
SWC::Core::BufferStreamOut_ZSTD
Definition: BufferStream.h:100
SWC::Core::BufferStreamOut
Definition: BufferStream.h:22
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Core::BufferStreamOut_ZSTD_OnAdd::~BufferStreamOut_ZSTD_OnAdd
virtual ~BufferStreamOut_ZSTD_OnAdd() noexcept
Definition: BufferStream.cc:53
SWC::Core::BufferStreamOut::BufferStreamOut
BufferStreamOut(const BufferStreamOut &)=delete
SWC::Core::BufferDyn< StaticBuffer >
SWC::Core::Buffer
Definition: Buffer.h:18
SWC_PURE_FUNC
#define SWC_PURE_FUNC
Definition: Compat.h:108
SWC::Core::BufferStreamOut_ENCODER::encoder
const Encoder::Type encoder
Definition: BufferStream.h:127
SWC::Core::BufferStreamOut_ZSTD_OnAdd::tmp_buff
DynamicBuffer tmp_buff
Definition: BufferStream.h:93
Buffer.h
SWC::Core::BufferStreamIn_ZSTD
Definition: BufferStream.h:183
SWC::Core::BufferStreamOut_ZSTD_OnAdd::out_buff
ZSTD_outBuffer out_buff
Definition: BufferStream.h:94
SWC::Core::BufferStreamIn_ZSTD::BufferStreamIn_ZSTD
BufferStreamIn_ZSTD(const BufferStreamIn_ZSTD &)=delete
SWC::Core::BufferStreamOut_ZSTD_OnAdd::plain_size
size_t plain_size
Definition: BufferStream.h:92
SWC::Core::BufferStreamOut::available
virtual size_t SWC_PURE_FUNC available()
Definition: BufferStream.cc:24
SWC::Core::BufferStreamIn_ZSTD::operator=
BufferStreamIn_ZSTD & operator=(BufferStreamIn_ZSTD &&)=delete
SWC::Core::BufferStreamOut_ZSTD_OnAdd::BufferStreamOut_ZSTD_OnAdd
BufferStreamOut_ZSTD_OnAdd(int level=0, size_t pre_alloc=12582912, size_t commit_size=8388608)
Definition: BufferStream.cc:39
SWC::Core::BufferStreamOut::add
virtual void add(const uint8_t *ptr, size_t len)
Definition: BufferStream.cc:28
SWC::Core::BufferStreamOut_ZSTD_OnAdd::operator=
BufferStreamOut_ZSTD_OnAdd & operator=(BufferStreamOut_ZSTD_OnAdd &&)=delete
SWC::Core::BufferStreamOut::get
virtual void get(StaticBuffer &output)
Definition: BufferStream.cc:32
SWC::Core::BufferStreamIn::BufferStreamIn
SWC_CAN_INLINE BufferStreamIn() noexcept
Definition: BufferStream.h:156
SWC::Core::BufferStreamIn::BufferStreamIn
BufferStreamIn(const BufferStreamIn &)=delete
SWC::Core::BufferStreamIn::error
int error
Definition: BufferStream.h:153
BufferStream.cc
SWC::Core::BufferStreamIn::BufferStreamIn
BufferStreamIn(BufferStreamIn &&)=delete
SWC::Core::BufferStreamOut_ZSTD::operator=
BufferStreamOut_ZSTD & operator=(BufferStreamOut_ZSTD &&)=delete
SWC::Core::BufferStreamOut_ZSTD_OnAdd::get
virtual void get(StaticBuffer &output) override
Definition: BufferStream.cc:98
SWC::Core::BufferStreamOut_ENCODER::BufferStreamOut_ENCODER
BufferStreamOut_ENCODER(BufferStreamOut_ENCODER &&)=delete
SWC::Core::BufferStreamOut::full
virtual bool SWC_PURE_FUNC full() const
Definition: BufferStream.cc:20
SWC::Core::BufferStreamIn::operator=
BufferStreamIn & operator=(BufferStreamIn &&)=delete
SWC::Core::BufferStreamOut_ZSTD_OnAdd::full
virtual bool SWC_PURE_FUNC full() const override
Definition: BufferStream.cc:61
SWC::Core::BufferStreamIn::operator=
BufferStreamIn & operator=(const BufferStreamIn &)=delete
SWC::Core::BufferStreamOut_ZSTD_OnAdd
Definition: BufferStream.h:63
Encoder.h
SWC::Core::BufferStreamOut_ZSTD_OnAdd::cstream
ZSTD_CStream *const cstream
Definition: BufferStream.h:90