|
StormByte C++ Library: Buffer module 1.2.0
StormByte-Buffer is the buffer module of the StormByte C++ suite.
|
High-performance, highly-concurrent thread-safe ring buffer. More...
#include <StormByte/buffer/ring.hxx>


Public Member Functions | |
Constructors / destructor / assignment | |
| Ring () noexcept=default | |
| Default construct an empty Ring. | |
| Ring (const DataType &data) noexcept | |
| Construct with initial data (copy). | |
| Ring (DataType &&data) noexcept | |
| Construct with initial data (move elements from vector). | |
| template<Type::ByteInputRange R> requires (!Type::SameAs<R, DataType>) | |
| Ring (const R &r) noexcept | |
| Construct from an input range (copy / convert). | |
| template<Type::ByteInputRange Rr> | |
| Ring (Rr &&r) noexcept | |
| Construct from an rvalue range. | |
| Ring (std::string_view sv) noexcept | |
| Construct from a string view (no trailing NUL). | |
| Ring (const char *s) noexcept | |
| Construct from a null-terminated C string. | |
| Ring (const Ring &)=delete | |
| Copy constructor (deleted – mutexes are not copyable). | |
| Ring (Ring &&other) noexcept | |
| Move constructor. | |
| virtual | ~Ring () noexcept |
| Virtual destructor. | |
| Ring & | operator= (const Ring &)=delete |
| Copy assignment (deleted). | |
| Ring & | operator= (Ring &&other) noexcept |
| Move assignment. | |
Comparison | |
| bool | operator== (const Ring &other) const noexcept |
| Equality comparison (contents and lifecycle state). | |
| bool | operator!= (const Ring &other) const noexcept |
| Inequality comparison. | |
Queries | |
| std::size_t | AvailableBytes () const noexcept override |
| Bytes available from the current read position. | |
| const DataType & | Data () const noexcept override |
| Snapshot of stored data (may rebuild an internal cache). | |
| bool | Empty () const noexcept override |
| Whether the underlying storage is empty. | |
| bool | EoF () const noexcept override |
| End-of-stream condition. | |
| bool | HasError () const noexcept |
| Whether SetError() has been called. | |
| bool | IsReadable () const noexcept override |
| Whether the buffer can still be read. | |
| bool | IsWritable () const noexcept override |
| Whether the buffer accepts writes. | |
| std::size_t | Size () const noexcept override |
| Total number of bytes stored. | |
Maintenance / lifecycle | |
| void | Clean () noexcept override |
| Discard data from the start up to the current read position. | |
| void | Clear () noexcept override |
| Clear all contents and reset the read position. | |
| void | Close () noexcept override |
| Close the buffer for further writes. | |
| bool | Drop (const std::size_t &count) noexcept override |
Discard count unread bytes. | |
| void | Seek (const std::ptrdiff_t &offset, const Position &mode) const noexcept override |
| Move the logical read position for non-destructive reads. | |
| void | SetError () noexcept override |
| Enter permanent error state (unreadable and unwritable). | |
Diagnostics | |
| std::string | HexDump (const std::size_t &columns=16, const std::size_t &byte_limit=0) const noexcept |
| Hexdump of unread contents from the current read position. | |
Peek (non-destructive, does not advance) | |
| bool | Peek (const std::size_t &count, DataType &outBuffer) const noexcept override |
| Peek into a DataType without advancing the read position. | |
| bool | Peek (const std::size_t &count, WriteOnly &outBuffer) const noexcept override |
| Peek into a WriteOnly without advancing the read position. | |
Read (non-destructive, advances position) | |
| bool | Read (const std::size_t &count, DataType &outBuffer) const noexcept override |
| Read into a DataType. | |
| bool | Read (const std::size_t &count, WriteOnly &outBuffer) const noexcept override |
| Read into a WriteOnly. | |
| void | ReadUntilEoF (DataType &outBuffer) const noexcept override |
| Read until EoF into a DataType. | |
| void | ReadUntilEoF (WriteOnly &outBuffer) const noexcept override |
| Read until EoF into a WriteOnly. | |
Extract (destructive) | |
| bool | Extract (const std::size_t &count, DataType &outBuffer) noexcept override |
| Extract bytes into a DataType. | |
| bool | Extract (const std::size_t &count, WriteOnly &outBuffer) noexcept override |
| Extract bytes into a WriteOnly. | |
| void | ExtractUntilEoF (DataType &outBuffer) noexcept override |
| Extract until EoF into a DataType. | |
| void | ExtractUntilEoF (WriteOnly &outBuffer) noexcept override |
| Extract until EoF into a WriteOnly. | |
Write | |
| bool | Write (const std::size_t &count, const DataType &data) noexcept override |
| Append bytes from a DataType (copy). | |
| bool | Write (const std::size_t &count, DataType &&data) noexcept override |
| Append bytes from a DataType (move). | |
| bool | Write (const std::size_t &count, const ReadOnly &data) noexcept override |
| Append bytes from a ReadOnly (copy path). | |
| bool | Write (const std::size_t &count, ReadOnly &&data) noexcept override |
| Append bytes from a ReadOnly (move / extract path). | |
| virtual bool | Write (const std::size_t &count, const DataType &data) noexcept=0 |
| Bring WriteOnly convenience Write overloads into scope. | |
| virtual bool | Write (const std::size_t &count, DataType &&data) noexcept=0 |
| Bring WriteOnly convenience Write overloads into scope. | |
| virtual bool | Write (const std::size_t &count, const ReadOnly &data) noexcept=0 |
| Bring WriteOnly convenience Write overloads into scope. | |
| virtual bool | Write (const std::size_t &count, ReadOnly &&data) noexcept=0 |
| Bring WriteOnly convenience Write overloads into scope. | |
| bool | Write (const ReadOnly &data) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| bool | Write (ReadOnly &&data) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| bool | Write (std::string_view sv) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| bool | Write (const char *s) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| bool | Write (const std::size_t &count, std::string_view sv) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| bool | Write (const std::size_t &count, const char *s) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<std::size_t N> | |
| bool | Write (const char(&s)[N]) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<Type::ByteInputRange R> | |
| bool | Write (const R &r) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<Type::ByteInputRange Rw> | |
| bool | Write (const std::size_t &count, const Rw &r) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<Type::ByteInputRange Rrw> | |
| bool | Write (const std::size_t &count, Rrw &&r) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<Type::ByteInputRange Rr> | |
| bool | Write (Rr &&r) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<Type::ByteInputIterator I, typename S > requires Type::SentinelFor<S, I> | |
| bool | Write (I first, S last) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
| template<Type::ByteInputIterator I2, typename S2 > requires Type::SentinelFor<S2, I2> | |
| bool | Write (const std::size_t &count, I2 first, S2 last) noexcept |
| Bring WriteOnly convenience Write overloads into scope. | |
Public Member Functions inherited from StormByte::Buffer::ReadWrite | |
| ReadWrite () noexcept | |
| Default construct. | |
| ReadWrite (const ReadWrite &other) noexcept=default | |
| Copy construct. | |
| ReadWrite (ReadWrite &&other) noexcept=default | |
| Move construct. | |
| virtual | ~ReadWrite () noexcept |
| Virtual destructor. | |
| ReadWrite & | operator= (const ReadWrite &other)=default |
| Copy assign. | |
| ReadWrite & | operator= (ReadWrite &&other) noexcept=default |
| Move assign. | |
Public Member Functions inherited from StormByte::Buffer::ReadOnly | |
| ReadOnly () noexcept | |
| Default construct. | |
| ReadOnly (const ReadOnly &) noexcept=default | |
| Copy construct. | |
| ReadOnly (ReadOnly &&) noexcept=default | |
| Move construct. | |
| virtual | ~ReadOnly () noexcept |
| Virtual destructor. | |
| ReadOnly & | operator= (const ReadOnly &)=default |
| Copy assign. | |
| ReadOnly & | operator= (ReadOnly &&) noexcept=default |
| Move assign. | |
| bool | Extract (DataType &outBuffer) noexcept |
| Extract all available bytes into a DataType. | |
| bool | Extract (WriteOnly &outBuffer) noexcept |
| Extract all available bytes into a WriteOnly. | |
| bool | Read (DataType &outBuffer) const noexcept |
| Read all available bytes into a DataType. | |
| bool | Read (WriteOnly &outBuffer) const noexcept |
| Read all available bytes into a WriteOnly. | |
Public Member Functions inherited from StormByte::Buffer::Generic | |
| Generic () noexcept=default | |
| Default construct. | |
| Generic (const Generic &) noexcept=default | |
| Copy construct. | |
| Generic (Generic &&) noexcept=default | |
| Move construct. | |
| virtual | ~Generic () noexcept=0 |
| Pure virtual destructor (keeps the class abstract). | |
| Generic & | operator= (const Generic &other)=default |
| Copy assign. | |
| Generic & | operator= (Generic &&) noexcept=default |
| Move assign. | |
Public Member Functions inherited from StormByte::Buffer::WriteOnly | |
| WriteOnly () noexcept | |
| Default construct. | |
| WriteOnly (const WriteOnly &)=default | |
| Copy construct. | |
| WriteOnly (WriteOnly &&) noexcept=default | |
| Move construct. | |
| virtual | ~WriteOnly () noexcept |
| Virtual destructor. | |
| WriteOnly & | operator= (const WriteOnly &)=default |
| Copy assign. | |
| WriteOnly & | operator= (WriteOnly &&) noexcept=default |
| Move assign. | |
| bool | Write (const ReadOnly &data) noexcept |
| Append all available bytes from a ReadOnly (copy). | |
| bool | Write (ReadOnly &&data) noexcept |
| Append all available bytes from a ReadOnly (move path). | |
| bool | Write (std::string_view sv) noexcept |
| Write a string view (no trailing NUL). | |
| bool | Write (const char *s) noexcept |
| Write a null-terminated C string. | |
| bool | Write (const std::size_t &count, std::string_view sv) noexcept |
Write up to count characters from a string view. | |
| bool | Write (const std::size_t &count, const char *s) noexcept |
Write up to count characters from a C string. | |
| template<std::size_t N> | |
| bool | Write (const char(&s)[N]) noexcept |
| Write a string literal without the trailing NUL. | |
| template<Type::ByteInputRange R> | |
| bool | Write (const R &r) noexcept |
| Write all elements from an input range. | |
| template<Type::ByteInputRange Rw> | |
| bool | Write (const std::size_t &count, const Rw &r) noexcept |
Write up to count elements from an input range. | |
| template<Type::ByteInputRange Rrw> | |
| bool | Write (const std::size_t &count, Rrw &&r) noexcept |
Write up to count elements from an rvalue range. | |
| template<Type::ByteInputRange Rr> | |
| bool | Write (Rr &&r) noexcept |
| Write all elements from an rvalue range. | |
| template<Type::ByteInputIterator I, typename S > requires Type::SentinelFor<S, I> | |
| bool | Write (I first, S last) noexcept |
| Write all elements from an iterator pair. | |
| template<Type::ByteInputIterator I2, typename S2 > requires Type::SentinelFor<S2, I2> | |
| bool | Write (const std::size_t &count, I2 first, S2 last) noexcept |
Write up to count elements from an iterator pair. | |
Protected Types | |
| enum class | Operation { Extract , Read , Peek } |
| Kind of internal read operation. More... | |
Protected Member Functions | |
| virtual std::ostringstream | HexDumpHeader () const noexcept |
| Build the hexdump header (size / position / status). | |
Internal helpers | |
| virtual bool | ReadInternal (const std::size_t &count, DataType &outBuffer, Operation flag) noexcept |
| virtual bool | ReadInternal (const std::size_t &count, WriteOnly &outBuffer, Operation flag) noexcept |
| virtual void | ReadUntilEoFInternal (DataType &outBuffer, Operation flag) noexcept |
| virtual void | ReadUntilEoFInternal (WriteOnly &outBuffer, Operation flag) noexcept |
| virtual bool | WriteInternal (const std::size_t &count, const DataType &src) noexcept |
| virtual bool | WriteInternal (const std::size_t &count, DataType &&src) noexcept |
Static Protected Member Functions | |
| static std::string | FormatHexLines (std::span< const std::byte > data, std::size_t start_offset, std::size_t columns) noexcept |
| Format hex/ASCII lines for a data span. | |
Static Protected Member Functions inherited from StormByte::Buffer::Generic | |
| template<Type::ByteInputRange Src> | |
| static DataType | DataConvert (const Src &src) noexcept |
| Convert an lvalue input range to DataType. | |
| template<Type::ByteInputRange Src> | |
| static DataType | DataConvert (Src &&src) noexcept |
| Convert an rvalue input range to DataType (moves when already DataType). | |
| static DataType | DataConvert (std::string_view sv) noexcept |
| Convert a string view to DataType (no trailing NUL). | |
| static DataType | DataConvert (const char *s) noexcept |
| Convert a null-terminated C string to DataType. | |
High-performance, highly-concurrent thread-safe ring buffer.
std::deque<std::byte> with a logical read position. Uses std::shared_mutex so multiple readers can proceed concurrently while writers and destructive operations remain exclusive. Critical sections are kept as short as possible; blocked readers wait on a condition_variable_any.
|
strongprotected |
|
defaultnoexcept |
Default construct an empty Ring.
|
inlineexplicitnoexcept |
Construct with initial data (copy).
| data | Source bytes. |
|
inlineexplicitnoexcept |
Construct with initial data (move elements from vector).
| data | Source bytes (moved element-wise into the deque). |
|
inlineexplicitnoexcept |
Construct from an input range (copy / convert).
| R | Range whose value_type is convertible to std::byte. |
| r | Source range (disabled when already DataType). |
|
inlineexplicitnoexcept |
Construct from an rvalue range.
| Rr | Range type. |
| r | Source range. |
|
inlineexplicitnoexcept |
Construct from a string view (no trailing NUL).
| sv | Source characters. |
|
inlineexplicitnoexcept |
Construct from a null-terminated C string.
| s | Source string (may be null → empty). |
|
delete |
Copy constructor (deleted – mutexes are not copyable).
|
noexcept |
Move constructor.
| other | Source Ring. |
|
virtualnoexcept |
Virtual destructor.
|
overridevirtualnoexcept |
Bytes available from the current read position.
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Discard data from the start up to the current read position.
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Clear all contents and reset the read position.
Does not clear closed / error flags.
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Close the buffer for further writes.
Subsequent writes fail; readers may still drain data. Waiters are notified.
Implements StormByte::Buffer::WriteOnly.
|
overridevirtualnoexcept |
Snapshot of stored data (may rebuild an internal cache).
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Discard count unread bytes.
| count | Number of bytes to drop. |
true on success, false if fewer bytes were available. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Whether the underlying storage is empty.
true if empty. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
End-of-stream condition.
true if closed (or in error) and no unread bytes remain. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Extract bytes into a DataType.
| count | Bytes to extract; 0 = all available. |
| outBuffer | Destination. |
true on success, false on failure. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Extract bytes into a WriteOnly.
| count | Bytes to extract; 0 = all available. |
| outBuffer | Destination writer. |
true on success, false on failure. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Extract until EoF into a DataType.
| outBuffer | Destination. |
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Extract until EoF into a WriteOnly.
| outBuffer | Destination writer. |
Implements StormByte::Buffer::ReadOnly.
|
staticprotectednoexcept |
Format hex/ASCII lines for a data span.
| data | Bytes to dump. |
| start_offset | Display offset of the first byte. |
| columns | Bytes per line. |
|
noexcept |
Whether SetError() has been called.
true in permanent error state.
|
noexcept |
Hexdump of unread contents from the current read position.
| columns | Bytes per line (0 → default 16). |
| byte_limit | Max bytes to include (0 → no limit). |
|
protectedvirtualnoexcept |
Build the hexdump header (size / position / status).
|
overridevirtualnoexcept |
Whether the buffer can still be read.
false in permanent error state. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Whether the buffer accepts writes.
false if closed or in error. Implements StormByte::Buffer::WriteOnly.
|
inlinenoexcept |
|
noexcept |
Equality comparison (contents and lifecycle state).
| other | Other Ring. |
true if equal under the comparison rules.
|
overridevirtualnoexcept |
Peek into a DataType without advancing the read position.
| count | Bytes to peek; 0 = all available. |
| outBuffer | Destination. |
true on success, false if insufficient data or error.count == 0: all available bytes (fails if none).count > 0: exactly count bytes, or fail if fewer are available.Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Peek into a WriteOnly without advancing the read position.
| count | Bytes to peek; 0 = all available. |
| outBuffer | Destination writer. |
true on success, false if insufficient data or error.Same count semantics as the DataType overload.
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Read into a DataType.
| count | Bytes to read; 0 = all available. |
| outBuffer | Destination. |
true on success, false on failure. Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Read into a WriteOnly.
| count | Bytes to read; 0 = all available. |
| outBuffer | Destination writer. |
true on success, false on failure. Implements StormByte::Buffer::ReadOnly.
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |
|
overridevirtualnoexcept |
Read until EoF into a DataType.
| outBuffer | Destination. |
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Read until EoF into a WriteOnly.
| outBuffer | Destination writer. |
Implements StormByte::Buffer::ReadOnly.
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |
|
overridevirtualnoexcept |
Move the logical read position for non-destructive reads.
| offset | Offset value. |
| mode | Position::Absolute or Position::Relative. |
Implements StormByte::Buffer::ReadOnly.
|
overridevirtualnoexcept |
Enter permanent error state (unreadable and unwritable).
Waiters are notified.
Implements StormByte::Buffer::WriteOnly.
|
overridevirtualnoexcept |
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
overridevirtualnoexcept |
Append bytes from a DataType (copy).
| count | Number of bytes to write. |
| data | Source vector. |
true on success, false if closed / error. Implements StormByte::Buffer::WriteOnly.
|
virtualnoexcept |
Bring WriteOnly convenience Write overloads into scope.
Implements StormByte::Buffer::WriteOnly.
|
overridevirtualnoexcept |
Append bytes from a ReadOnly (copy path).
| count | Number of bytes to write. |
| data | Source buffer. |
true on success, false if closed / error. Implements StormByte::Buffer::WriteOnly.
|
virtualnoexcept |
Bring WriteOnly convenience Write overloads into scope.
Implements StormByte::Buffer::WriteOnly.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
overridevirtualnoexcept |
Append bytes from a DataType (move).
| count | Number of bytes to write. |
| data | Source vector. |
true on success, false if closed / error. Implements StormByte::Buffer::WriteOnly.
|
virtualnoexcept |
Bring WriteOnly convenience Write overloads into scope.
Implements StormByte::Buffer::WriteOnly.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
overridevirtualnoexcept |
Append bytes from a ReadOnly (move / extract path).
| count | Number of bytes to write. |
| data | Source buffer. |
true on success, false if closed / error. Implements StormByte::Buffer::WriteOnly.
|
virtualnoexcept |
Bring WriteOnly convenience Write overloads into scope.
Implements StormByte::Buffer::WriteOnly.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
inlinenoexcept |
Bring WriteOnly convenience Write overloads into scope.
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |