CCF
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ringbuffer::Writer Class Reference

#include <ring_buffer.h>

Inherits ringbuffer::AbstractWriter.

Classes

struct  Reservation
 

Public Member Functions

 Writer (const Reader &r)
 
 Writer (const Writer &that)
 
virtual ~Writer ()
 
virtual std::optional< size_t > prepare (Message m, size_t size, bool wait=true, size_t *identifier=nullptr) override
 
virtual void finish (const WriteMarker &marker) override
 
virtual size_t get_max_message_size () override
 
- Public Member Functions inherited from ringbuffer::AbstractWriter
virtual ~AbstractWriter ()=default
 
template<typename Serializer , typename... Ts>
void write_with (Message m, Ts &&... ts)
 
template<typename Serializer , typename... Ts>
bool try_write_with (Message m, Ts &&... ts)
 
template<typename... Ts>
void write (Message m, Ts &&... ts)
 
template<typename... Ts>
bool try_write (Message m, Ts &&... ts)
 

Protected Member Functions

virtual WriteMarker write_bytes (const WriteMarker &marker, const uint8_t *bytes, size_t size) override
 

Protected Attributes

BufferDef bd
 
const size_t rmax
 

Additional Inherited Members

- Public Types inherited from ringbuffer::AbstractWriter
using WriteMarker = std::optional< size_t >
 

Constructor & Destructor Documentation

◆ Writer() [1/2]

ringbuffer::Writer::Writer ( const Reader r)
inline

◆ Writer() [2/2]

ringbuffer::Writer::Writer ( const Writer that)
inline

◆ ~Writer()

virtual ringbuffer::Writer::~Writer ( )
inlinevirtual

Member Function Documentation

◆ finish()

virtual void ringbuffer::Writer::finish ( const WriteMarker marker)
inlineoverridevirtual

◆ get_max_message_size()

virtual size_t ringbuffer::Writer::get_max_message_size ( )
inlineoverridevirtual

◆ prepare()

virtual std::optional< size_t > ringbuffer::Writer::prepare ( Message  m,
size_t  size,
bool  wait = true,
size_t *  identifier = nullptr 
)
inlineoverridevirtual

Implementation requires 3 methods - prepare, finish, and write_bytes. For each message, prepare will be called with the total message size. It should return a WriteMarker for this reservation. That WriteMarker will be passed to write_bytes, which may be called repeatedly for each part of the message. write_bytes returns an opaque WriteMarker which will be passed to the next invocation of write_bytes, to track progress. Finally, finish will be called with the WriteMarker initially returned from prepare.

Implements ringbuffer::AbstractWriter.

◆ write_bytes()

virtual WriteMarker ringbuffer::Writer::write_bytes ( const WriteMarker marker,
const uint8_t *  bytes,
size_t  size 
)
inlineoverrideprotectedvirtual

Member Data Documentation

◆ bd

BufferDef ringbuffer::Writer::bd
protected

◆ rmax

const size_t ringbuffer::Writer::rmax
protected

The documentation for this class was generated from the following file: