Skip to main content

WriteBuffer Class Template

Write-only buffer for accumulating messages in a double-buffered system. More...

Declaration

template <typename T> class helios::core::container::buffer::WriteBuffer<T> { ... }

Friends Index

template <typename T>
classReadWriteDoubleBuffer< T >

Public Member Functions Index

template <typename... Args>
WriteBuffer &push (Args &&... args)

Constructs and appends a message to the buffer. More...

template <typename T>
WriteBuffer &reserve (size_t size)

Pre-allocates memory for the specified number of messages. More...

template <typename T>
WriteBuffer &clear ()

Removes all messages from the buffer. More...

Private Member Functions Index

template <typename T>
auto bufferData () -> std::vector< T > &

Returns a mutable reference to the internal buffer. More...

Private Member Attributes Index

template <typename T>
std::vector< T >bufferData_

Internal storage for buffered messages. More...

Description

Write-only buffer for accumulating messages in a double-buffered system.

WriteBuffer is the producer-side of a double-buffered message system. Messages are pushed to this buffer during frame processing, then swapped with a ReadBuffer at frame boundaries. This separation enables lock-free, single-threaded producer-consumer patterns.

The internal storage is only accessible to ReadWriteDoubleBuffer for swap operations.

Template Parameters
T

The message type stored in the buffer. Must be move-constructible.

Definition at line 32 of file WriteBuffer.ixx.

Friends

ReadWriteDoubleBuffer< T >

friend class ReadWriteDoubleBuffer< T >

Definition at line 1 of file WriteBuffer.ixx.

34 friend class ReadWriteDoubleBuffer<T>;

Public Member Functions

clear()

template <typename T>
WriteBuffer & helios::core::container::buffer::WriteBuffer< T >::clear ()
inline

Removes all messages from the buffer.

Returns

Reference to this buffer for method chaining.

Definition at line 86 of file WriteBuffer.ixx.

87 bufferData_.clear();
88 return *this;
89 }

Reference helios::core::container::buffer::WriteBuffer< T >::clear.

Referenced by helios::core::container::buffer::WriteBuffer< T >::clear.

push()

template <typename... Args>
WriteBuffer & helios::core::container::buffer::WriteBuffer< T >::push (Args &&... args)
inline

Constructs and appends a message to the buffer.

Template Parameters
Args

Constructor argument types for T.

Parameters
args

Arguments forwarded to T's constructor.

Returns

Reference to this buffer for method chaining.

Definition at line 64 of file WriteBuffer.ixx.

64 WriteBuffer& push(Args&&... args) {
65 bufferData_.emplace_back(std::forward<Args>(args)...);
66 return *this;
67 }

reserve()

template <typename T>
WriteBuffer & helios::core::container::buffer::WriteBuffer< T >::reserve (size_t size)
inline

Pre-allocates memory for the specified number of messages.

Parameters
size

The number of messages to reserve capacity for.

Returns

Reference to this buffer for method chaining.

Definition at line 76 of file WriteBuffer.ixx.

76 WriteBuffer& reserve(size_t size) {
77 bufferData_.reserve(size);
78 return *this;
79 }

Reference helios::core::container::buffer::WriteBuffer< T >::reserve.

Referenced by helios::core::container::buffer::WriteBuffer< T >::reserve.

Private Member Functions

bufferData()

template <typename T>
std::vector< T > & helios::core::container::buffer::WriteBuffer< T >::bufferData ()
inline nodiscard

Returns a mutable reference to the internal buffer.

Only accessible to ReadWriteDoubleBuffer for swap operations.

Returns

Reference to the internal vector.

Definition at line 48 of file WriteBuffer.ixx.

48 [[nodiscard]] std::vector<T>& bufferData() {
49 return bufferData_;
50 }

Private Member Attributes

bufferData_

template <typename T>
std::vector<T> helios::core::container::buffer::WriteBuffer< T >::bufferData_

Internal storage for buffered messages.

Definition at line 39 of file WriteBuffer.ixx.

39 std::vector<T> bufferData_;

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


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.