16 size_t used()
const {
return used_; }
17 size_t free()
const {
return capacity_ - used_; }
19 bool full()
const {
return used_ == capacity_; }
20 bool empty()
const {
return used_ == 0; }
32 if (
len == 0)
return 0;
33 size_t pos = write_pos();
50 if (used_ == capacity_)
return false;
51 buf_[write_pos()] =
b;
59 if (used_ == 0)
return false;
62 if (head_ == capacity_) head_ = 0;
70 if (
len > used_)
len = used_;
71 if (
len == 0)
return 0;
72 size_t split = capacity_ - head_;
86 size_t write_pos()
const {
87 size_t pos = head_ + used_;
88 if (
pos >= capacity_)
pos -= capacity_;
92 std::unique_ptr<byte[]> buf_;
size_t write(const byte *data, size_t len)
size_t read(byte *data, size_t len)
RingBuffer(size_t capacity)
roo::basic_string_view< CharT, Traits > basic_string_view