18 #ifndef RAUL_EVENT_RING_BUFFER_HPP 19 #define RAUL_EVENT_RING_BUFFER_HPP 23 #include "raul/RingBuffer.hpp" 24 #include "raul/TimeStamp.hpp" 44 size_t capacity()
const {
return _size; }
46 size_t write(
TimeStamp time,
size_t size,
const uint8_t* buf);
47 bool read(
TimeStamp* time,
size_t* size, uint8_t* buf);
52 EventRingBuffer::read(
TimeStamp* time,
size_t* size, uint8_t* buf)
54 bool success = RingBuffer::full_read(
sizeof(
TimeStamp), (uint8_t*)time);
56 success = RingBuffer::full_read(
sizeof(
size_t), (uint8_t*)size);
58 success = RingBuffer::full_read(*size, buf);
65 EventRingBuffer::write(
TimeStamp time,
size_t size,
const uint8_t* buf)
69 if (write_space() < (
sizeof(
TimeStamp) +
sizeof(
size_t) + size)) {
72 RingBuffer::write(
sizeof(
TimeStamp), (uint8_t*)&time);
73 RingBuffer::write(
sizeof(
size_t), (uint8_t*)&size);
74 RingBuffer::write(size, buf);
82 #endif // RAUL_EVENT_RING_BUFFER_HPP A lock-free RingBuffer.
Definition: RingBuffer.hpp:40
EventRingBuffer(size_t capacity)
Definition: EventRingBuffer.hpp:40
A real-time time stamp (possible units: frame, absolute (s), or beat).
Definition: TimeStamp.hpp:80
A RingBuffer of events (generic time-stamped binary "blobs").
Definition: EventRingBuffer.hpp:35
const uint32_t _size
Size (capacity) in bytes.
Definition: RingBuffer.hpp:106