21 uint32_t
space(
void)
const;
24 bool empty(
void)
const;
27 uint32_t
write(
const uint8_t *data, uint32_t len);
30 uint32_t
read(uint8_t *data, uint32_t len);
39 bool update(
const uint8_t *data, uint32_t len);
51 const uint8_t *
readptr(uint32_t &available_bytes);
55 int16_t
peek(uint32_t ofs)
const;
60 uint32_t
peekbytes(uint8_t *data, uint32_t len);
90 std::atomic<uint32_t>
head{0};
91 std::atomic<uint32_t>
tail{0};
115 return buffer->available() /
sizeof(T);
120 return buffer->space() /
sizeof(T);
130 if (
buffer->space() <
sizeof(T)) {
133 return buffer->write((uint8_t*)&
object,
sizeof(T)) ==
sizeof(T);
137 bool push(
const T *
object, uint32_t n) {
138 if (
buffer->space() < n*
sizeof(T)) {
141 return buffer->write((uint8_t*)
object, n*
sizeof(T)) == n*
sizeof(T);
148 return buffer->advance(
sizeof(T));
155 if (
buffer->available() <
sizeof(T)) {
158 return buffer->read((uint8_t*)&
object,
sizeof(T)) ==
sizeof(T);
167 if (
buffer->space() <
sizeof(T)) {
168 buffer->advance(
sizeof(T));
177 uint32_t _space =
buffer->space();
178 if (_space <
sizeof(T)*n) {
179 buffer->advance(
sizeof(T)*(n-_space));
181 return push(
object, n);
188 return buffer->peekbytes((uint8_t*)&
object,
sizeof(T)) ==
sizeof(T);
194 return buffer->update((uint8_t*)&
object,
sizeof(T));
214 _buffer =
new T[_size];
232 return _size - _count;
245 _buffer[(_head+_count)%_size] =
object;
257 _head = (_head+1) % _size;
275 object = _buffer[_head];
294 bool remove(uint16_t n) {
308 for (uint16_t i=n; i<_count-1; i++) {
309 *(*this)[i] = *(*this)[i+1];
321 return &_buffer[(_head+i)%_size];
uint32_t available(void) const
ObjectBuffer(uint32_t _size)
uint16_t size(void) const
const uint8_t * readptr(uint32_t &available_bytes)
bool push_force(const T &object)
static uint8_t buffer[SRXL_FRAMELEN_MAX]
ObjectArray(uint16_t size_)
std::atomic< uint32_t > head
bool update(const T &object)
ByteBuffer(uint32_t size)
bool commit(uint32_t len)
uint32_t get_size(void) const
uint32_t space(void) const
bool update(const uint8_t *data, uint32_t len)
uint32_t space(void) const
uint32_t available(void) const
bool set_size(uint32_t size)
uint32_t read(uint8_t *data, uint32_t len)
uint32_t peekbytes(uint8_t *data, uint32_t len)
T * operator[](uint16_t i)
bool push_force(const T &object)
uint16_t space(void) const
uint32_t write(const uint8_t *data, uint32_t len)
uint8_t peekiovec(IoVec vec[2], uint32_t len)
uint16_t available(void) const
bool push(const T &object)
int16_t peek(uint32_t ofs) const
bool push_force(const T *object, uint32_t n)
bool push(const T &object)
uint8_t reserve(IoVec vec[2], uint32_t len)
bool push(const T *object, uint32_t n)
std::atomic< uint32_t > tail
bool read_byte(uint8_t *data)