4#include "roo_logging.h"
17 : capacity_log2_(
capacity_log2), begin_(initial_seq), end_(initial_seq) {
21 uint16_t
slotsUsed()
const {
return end_ - begin_; }
41 CHECK_EQ(begin_, end_);
59 DCHECK_GE(pos_bits, capacity_log2_ + 2);
60 uint16_t left = begin_.
raw() - (1 << (pos_bits - 1));
61 return left + (((uint16_t)(truncated_pos - left)) % (1 << pos_bits));
65 uint16_t
capacity()
const {
return 1 << capacity_log2_; }
68 uint16_t offset_begin()
const {
return begin_.
raw() & (
capacity() - 1); }
69 uint16_t offset_end()
const {
return end_.
raw() & (
capacity() - 1); }
RingBuffer(int capacity_log2, uint16_t initial_seq=0)
uint16_t slotsUsed() const
bool contains(SeqNum seq) const
uint16_t offset_for(SeqNum seq) const
int capacity_log2() const
uint16_t capacity() const
uint16_t slotsFree() const
SeqNum restorePosHighBits(uint16_t truncated_pos, int pos_bits)