18 #ifndef RAUL_EVENT_RING_BUFFER_HPP
19 #define RAUL_EVENT_RING_BUFFER_HPP
24 #include <raul/RingBuffer.hpp>
25 #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<uint8_t>::full_read(
sizeof(TimeStamp), (uint8_t*)time);
56 success = RingBuffer<uint8_t>::full_read(
sizeof(
size_t), (uint8_t*)size);
58 success = RingBuffer<uint8_t>::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<uint8_t>::write(
sizeof(TimeStamp), (uint8_t*)&time);
73 RingBuffer<uint8_t>::write(
sizeof(
size_t), (uint8_t*)&size);
74 RingBuffer<uint8_t>::write(size, buf);
82 #endif // RAUL_EVENT_RING_BUFFER_HPP
size_t _size
Size (capacity) in bytes.
Definition: RingBuffer.hpp:101
A lock-free RingBuffer.
Definition: RingBuffer.hpp:33
EventRingBuffer(size_t capacity)
Definition: EventRingBuffer.hpp:40
A RingBuffer of events (generic time-stamped binary "blobs").
Definition: EventRingBuffer.hpp:35