5 : _buffer(size_buffer), _head(0), _tail(0), _size(0)
12 throw std::out_of_range(
"trying to write on full buffer");
14 std::vector<unsigned char> tmp(line.begin(), line.end());
21 throw std::out_of_range(
"trying to write on full buffer");
23 _buffer[_head] = byte;
24 _head = (_head + 1) % _buffer.size();
31 throw std::out_of_range(
"trying to write on full buffer, try to increase size");
33 if (bytes.size() > _buffer.size() - _size)
34 throw std::out_of_range(
"trying to read more than available in buffer");
36 for (
size_t i = 0; i < bytes.size(); ++i)
38 _buffer[_head] = bytes[i];
39 _head = (_head + 1) % _buffer.size();
47 throw std::out_of_range(
"trying to read on empty buffer");
50 byte = _buffer[_tail];
51 _tail = (_tail + 1) % _buffer.size();
60 throw std::out_of_range(
"trying to read more than available in buffer or empty buffer");
62 std::vector<unsigned char> byte(
size);
63 for (
size_t i = 0; i <
size; ++i)
65 byte[i] = _buffer[_tail];
66 _tail = (_tail + 1) % _buffer.size();
76 throw std::out_of_range(
"trying to put more than available in buffer");
78 const unsigned char* ptr =
reinterpret_cast<const unsigned char*
>(data);
79 for (
size_t i = 0; i <
size; ++i)
81 _buffer[_head] = ptr[i];
82 _head = (_head + 1) % _buffer.size();
90 throw std::out_of_range(
"trying to read more than available in buffer or empty buffer");
92 unsigned char* ptr =
reinterpret_cast<unsigned char*
>(data);
93 for (
size_t i = 0; i <
size; ++i)
95 ptr[i] = _buffer[_tail];
96 _tail = (_tail + 1) % _buffer.size();
104 throw std::out_of_range(
"trying to read on empty buffer");
107 byte = _buffer[_tail];
114 throw std::out_of_range(
"trying to read on empty buffer");
117 throw std::out_of_range(
"trying to read more than available in buffer");
119 std::vector<unsigned char> byte(
size);
120 size_t tmp_idx = _tail;
122 for (
size_t i = 0; i <
size; ++i)
124 byte[i] = _buffer[tmp_idx];
125 tmp_idx = (tmp_idx + 1) % _buffer.size();
138 return _buffer.size() == _size;
148 return _buffer.size();
153 return _buffer.size() - _size;
void push(const unsigned char &byte)
unsigned char peek() const
void popInto(void *data, const size_t &size)
void pushInto(const void *data, const size_t &size)
size_t capacityAvailable() const