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 RingBuffer of events (generic time-stamped binary "blobs").
Definition: EventRingBuffer.hpp:35
const uint32_t _size
Size (capacity) in bytes.
Definition: RingBuffer.hpp:106