|
| | Producer () noexcept |
| | Construct a Producer with a new SharedFIFO buffer.
|
| |
| | Producer (std::shared_ptr< SharedFIFO > buffer) |
| | Construct a Producer with an existing SharedFIFO buffer.
|
| |
| | Producer (const Consumer &consumer) |
| | Construct a Producer from a Consumer's buffer.
|
| |
| | Producer (const Producer &other) noexcept |
| | Copy constructor.
|
| |
| | Producer (Producer &&other) noexcept |
| | Move constructor.
|
| |
|
| ~Producer () noexcept=default |
| | Destructor.
|
| |
| Producer & | operator= (const Producer &other) noexcept |
| | Copy assignment operator.
|
| |
| Producer & | operator= (Producer &&other) noexcept |
| | Move assignment operator.
|
| |
| bool | operator== (const Producer &other) const noexcept |
| | Equality comparison.
|
| |
| bool | operator!= (const Producer &other) const noexcept |
| | Inequality comparison.
|
| |
| void | Close () noexcept |
| | Thread-safe close for further writes.
|
| |
| bool | IsWritable () const noexcept override |
| | Check if the buffer is writable.
|
| |
| void | SetError () noexcept |
| | Thread-safe error state setting.
|
| |
| bool | Write (const std::size_t &count, const DataType &data) noexcept override |
| | Write bytes from a vector to the buffer.
|
| |
| bool | Write (const DataType &data) noexcept |
| | Write all bytes from a vector to the buffer.
|
| |
| bool | Write (const std::size_t &count, DataType &&data) noexcept override |
| | Move bytes from a vector to the buffer.
|
| |
| bool | Write (DataType &&data) noexcept |
| | Move all bytes from a vector to the buffer.
|
| |
| bool | Write (const std::size_t &count, const ReadOnly &data) noexcept override |
| | Write bytes from a vector to the buffer.
|
| |
| bool | Write (const std::size_t &count, ReadOnly &&data) noexcept override |
| | Move bytes from a vector to the buffer.
|
| |
| class Consumer | Consumer () |
| | Create a Consumer for reading from this Producer's buffer.
|
| |
| virtual bool | Write (const std::size_t &count, const DataType &data) noexcept=0 |
| |
| bool | Write (std::string_view sv) noexcept |
| |
| bool | Write (const char *s) noexcept |
| |
| bool | Write (const std::size_t &count, std::string_view sv) noexcept |
| |
| bool | Write (const std::size_t &count, const char *s) noexcept |
| |
| template<std::size_t N> |
| bool | Write (const char(&s)[N]) noexcept |
| |
template<std::ranges::input_range R>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<R>>>) && requires(std::ranges::range_value_t<R> v) { static_cast<std::byte>(v); } |
| bool | Write (const R &r) noexcept |
| |
template<std::ranges::input_range Rw>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<Rw>>>) && requires(std::ranges::range_value_t<Rw> v) { static_cast<std::byte>(v); } |
| bool | Write (const std::size_t &count, const Rw &r) noexcept |
| |
template<std::ranges::input_range Rrw>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<Rrw>>>) && requires(std::ranges::range_value_t<Rrw> v) { static_cast<std::byte>(v); } |
| bool | Write (const std::size_t &count, Rrw &&r) noexcept |
| |
template<std::ranges::input_range Rr>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<Rr>>>) && requires(std::ranges::range_value_t<Rr> v) { static_cast<std::byte>(v); } |
| bool | Write (Rr &&r) noexcept |
| |
template<std::input_iterator I, std::sentinel_for< I > S>
requires (!std::is_class_v<std::remove_cv_t<std::iter_value_t<I>>>) && requires(std::iter_value_t<I> v) { static_cast<std::byte>(v); } |
| bool | Write (I first, S last) noexcept |
| |
template<std::input_iterator I2, std::sentinel_for< I2 > S2>
requires (!std::is_class_v<std::remove_cv_t<std::iter_value_t<I2>>>) && requires(std::iter_value_t<I2> v) { static_cast<std::byte>(v); } |
| bool | Write (const std::size_t &count, I2 first, S2 last) noexcept |
| |
| virtual bool | Write (const std::size_t &count, DataType &&data) noexcept=0 |
| |
| virtual bool | Write (const std::size_t &count, const ReadOnly &data) noexcept=0 |
| |
| bool | Write (const ReadOnly &data) noexcept |
| |
| virtual bool | Write (const std::size_t &count, ReadOnly &&data) noexcept=0 |
| |
| bool | Write (ReadOnly &&data) noexcept |
| |
|
| WriteOnly () noexcept |
| | Construct WriteOnly.
|
| |
| | WriteOnly (const DataType &data) noexcept |
| | Construct WriteOnly.
|
| |
| | WriteOnly (DataType &&data) noexcept |
| | Construct WriteOnly with initial data using move semantics.
|
| |
|
| WriteOnly (const WriteOnly &)=default |
| | Copy construct deleted.
|
| |
|
| WriteOnly (WriteOnly &&) noexcept=default |
| | Move construct deleted.
|
| |
|
virtual | ~WriteOnly () noexcept=default |
| | Virtual destructor.
|
| |
|
WriteOnly & | operator= (const WriteOnly &)=default |
| | Copy assign deleted.
|
| |
|
WriteOnly & | operator= (WriteOnly &&) noexcept=default |
| | Move assign deleted.
|
| |
| bool | Write (std::string_view sv) noexcept |
| | Write from a string view (does not include terminating NUL).
|
| |
|
bool | Write (const char *s) noexcept |
| | Write from a C string pointer (null-terminated). Uses std::string_view.
|
| |
|
bool | Write (const std::size_t &count, std::string_view sv) noexcept |
| | Write up-to count bytes from a string view (0 => all available).
|
| |
|
bool | Write (const std::size_t &count, const char *s) noexcept |
| | Write up-to count bytes from a C string pointer (null-terminated).
|
| |
|
template<std::size_t N> |
| bool | Write (const char(&s)[N]) noexcept |
| | Write from a string literal (array) and avoid copying the trailing NUL.
|
| |
template<std::ranges::input_range R>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<R>>>) && requires(std::ranges::range_value_t<R> v) { static_cast<std::byte>(v); } |
| bool | Write (const R &r) noexcept |
| | Write all elements from an input range to the buffer.
|
| |
template<std::ranges::input_range Rw>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<Rw>>>) && requires(std::ranges::range_value_t<Rw> v) { static_cast<std::byte>(v); } |
| bool | Write (const std::size_t &count, const Rw &r) noexcept |
| | Write up-to count elements from an input range.
|
| |
template<std::ranges::input_range Rrw>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<Rrw>>>) && requires(std::ranges::range_value_t<Rrw> v) { static_cast<std::byte>(v); } |
| bool | Write (const std::size_t &count, Rrw &&r) noexcept |
| | Write up-to count elements from an rvalue range.
|
| |
template<std::ranges::input_range Rr>
requires (!std::is_class_v<std::remove_cv_t<std::ranges::range_value_t<Rr>>>) && requires(std::ranges::range_value_t<Rr> v) { static_cast<std::byte>(v); } |
| bool | Write (Rr &&r) noexcept |
| | Write from an rvalue input range.
|
| |
template<std::input_iterator I, std::sentinel_for< I > S>
requires (!std::is_class_v<std::remove_cv_t<std::iter_value_t<I>>>) && requires(std::iter_value_t<I> v) { static_cast<std::byte>(v); } |
| bool | Write (I first, S last) noexcept |
| | Write from iterator pair whose value_type is convertible to std::byte.
|
| |
template<std::input_iterator I2, std::sentinel_for< I2 > S2>
requires (!std::is_class_v<std::remove_cv_t<std::iter_value_t<I2>>>) && requires(std::iter_value_t<I2> v) { static_cast<std::byte>(v); } |
| bool | Write (const std::size_t &count, I2 first, S2 last) noexcept |
| | Write up-to count bytes from an iterator pair (0 => all available).
|
| |
| bool | Write (const ReadOnly &data) noexcept |
| | Write bytes from a vector to the buffer.
|
| |
| bool | Write (ReadOnly &&data) noexcept |
| | Move bytes from a vector to the buffer.
|
| |
|
| Generic () noexcept=default |
| | Construct Generic.
|
| |
| | Generic (const DataType &data) noexcept |
| | Construct Generic.
|
| |
| | Generic (DataType &&data) noexcept |
| | Construct Generic with initial data using move semantics.
|
| |
|
| Generic (const Generic &) noexcept=default |
| | Copy construct deleted.
|
| |
|
| Generic (Generic &&) noexcept=default |
| | Move construct deleted.
|
| |
|
virtual | ~Generic () noexcept=0 |
| | Virtual destructor.
|
| |
|
Generic & | operator= (const Generic &other)=default |
| | Copy assign deleted.
|
| |
|
Generic & | operator= (Generic &&) noexcept=default |
| | Move assign deleted.
|
| |
Producer interface for writing data to a shared FIFO buffer.
- Overview
- Producer provides a write-only interface to a SharedFIFO buffer. Multiple Producer instances can share the same underlying buffer, allowing multiple producers to write data concurrently in a thread-safe manner.
- Thread safety
- All write operations are thread-safe as they delegate to the underlying SharedFIFO which is fully thread-safe.