Skip to main content

ReadWriteDoubleBuffer.ixx File

Type-safe double-buffered container for producer-consumer patterns. More...

Included Headers

#include <memory> #include <span> #include <vector> #include <cstddef> #include <helios.engine.core.container.buffer:ReadBuffer>

Namespaces Index

namespacehelios
namespaceengine
namespacecore
namespacecontainer
namespacebuffer

Classes Index

classReadWriteDoubleBuffer<T>

Type-safe double-buffered container for messages of type T. More...

Description

Type-safe double-buffered container for producer-consumer patterns.

File Listing

The file content with the documentation metadata removed is:

1
5module;
6
7#include <memory>
8#include <span>
9#include <vector>
10#include <cstddef>
11
12export module helios.engine.core.container.buffer:ReadWriteDoubleBuffer;
13
14export import :ReadWriteDoubleBufferFwd;
15
16import :DoubleBuffer;
17import :WriteBuffer;
18import :ReadBuffer;
19
20
33 template<typename T>
35
39 ReadBuffer<T> readBuffer_;
40
44 WriteBuffer<T> writeBuffer_;
45
46
47 public:
48
54 void reserve(size_t size) {
55 readBuffer_.reserve(size);
56 writeBuffer_.reserve(size);
57 }
58
66 template<typename... Args>
67 void push(Args&&... args) {
68 writeBuffer_.push(std::forward<Args>(args)...);
69 }
70
76 std::span<const T> read() const noexcept {
77 return readBuffer_.read();
78 }
79
86 void swap() override {
87 readBuffer_.clear().bufferData().swap(writeBuffer_.bufferData());
88 }
89
93 void clearReadBuffer() override {
94 readBuffer_.clear();
95 }
96
100 void clearWriteBuffer() override {
101 writeBuffer_.clear();
102 }
103 };
104}

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.