|
Common System 0.2.0
Common interfaces and patterns for system integration
|
Thread-safe fixed-size circular buffer. More...
#include <circular_buffer.h>

Public Member Functions | |
| CircularBuffer ()=default | |
| bool | push (const T &value, bool overwrite=false) |
| bool | push (T &&value, bool overwrite=false) |
| std::optional< T > | pop () |
| bool | empty () const |
| bool | full () const |
| std::size_t | size () const |
| constexpr std::size_t | capacity () const |
| CircularBuffer ()=default | |
| bool | push (const T &value, bool overwrite=false) |
| Push a value to the buffer. | |
| bool | push (T &&value, bool overwrite=false) |
| std::optional< T > | pop () |
| Pop a value from the buffer. | |
| bool | empty () const |
| bool | full () const |
| std::size_t | size () const |
| constexpr std::size_t | capacity () const |
Private Member Functions | |
| void | advance (std::size_t &index) noexcept |
| bool | is_full_locked () const noexcept |
| std::optional< T > | pop_locked () |
| void | advance (std::size_t &index) noexcept |
| bool | is_full_locked () const noexcept |
| std::optional< T > | pop_locked () |
Private Attributes | |
| std::mutex | mutex_ |
| std::array< T, Capacity > | buffer_ {} |
| std::size_t | head_ {0} |
| std::size_t | tail_ {0} |
| std::size_t | size_ {0} |
Thread-safe fixed-size circular buffer.
| T | Element type |
| Capacity | Maximum number of elements |
Definition at line 100 of file utils.cppm.
|
default |
|
exportdefault |
|
inlineprivatenoexcept |
Definition at line 84 of file circular_buffer.h.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::push().

|
inlineexportprivatenoexcept |
Definition at line 169 of file utils.cppm.
|
inlinenodiscardconstexpr |
Definition at line 79 of file circular_buffer.h.
|
inlinenodiscardconstexprexport |
Definition at line 164 of file utils.cppm.
|
inlinenodiscard |
Definition at line 64 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
Referenced by main().

|
inlinenodiscardexport |
Definition at line 149 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
|
inlinenodiscard |
Definition at line 69 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
Referenced by main().

|
inlinenodiscardexport |
Definition at line 154 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
|
inlineprivatenoexcept |
Definition at line 88 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::push().

|
inlineexportprivatenoexcept |
Definition at line 173 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
|
inlinenodiscard |
Definition at line 59 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked().
Referenced by main().


|
inlinenodiscardexport |
Pop a value from the buffer.
Definition at line 144 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked().

|
inlineprivate |
Definition at line 92 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::advance(), kcenon::common::utils::CircularBuffer< T, Capacity >::buffer_, kcenon::common::utils::CircularBuffer< T, Capacity >::head_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::pop(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::push().


|
inlineexportprivate |
Definition at line 177 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::advance(), kcenon::common::utils::CircularBuffer< T, Capacity >::buffer_, kcenon::common::utils::CircularBuffer< T, Capacity >::head_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.

|
inline |
Definition at line 31 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::advance(), kcenon::common::utils::CircularBuffer< T, Capacity >::buffer_, kcenon::common::utils::CircularBuffer< T, Capacity >::is_full_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::size_, and kcenon::common::utils::CircularBuffer< T, Capacity >::tail_.
Referenced by main().


|
inlineexport |
Push a value to the buffer.
| value | Value to push |
| overwrite | If true, overwrite oldest value when full |
Definition at line 112 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::advance(), kcenon::common::utils::CircularBuffer< T, Capacity >::buffer_, kcenon::common::utils::CircularBuffer< T, Capacity >::is_full_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::size_, and kcenon::common::utils::CircularBuffer< T, Capacity >::tail_.

|
inline |
Definition at line 45 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::advance(), kcenon::common::utils::CircularBuffer< T, Capacity >::buffer_, kcenon::common::utils::CircularBuffer< T, Capacity >::is_full_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::size_, and kcenon::common::utils::CircularBuffer< T, Capacity >::tail_.

|
inlineexport |
Definition at line 126 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::advance(), kcenon::common::utils::CircularBuffer< T, Capacity >::buffer_, kcenon::common::utils::CircularBuffer< T, Capacity >::is_full_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::size_, and kcenon::common::utils::CircularBuffer< T, Capacity >::tail_.

|
inlinenodiscard |
Definition at line 74 of file circular_buffer.h.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
Referenced by main().

|
inlinenodiscardexport |
Definition at line 159 of file utils.cppm.
References kcenon::common::utils::CircularBuffer< T, Capacity >::mutex_, and kcenon::common::utils::CircularBuffer< T, Capacity >::size_.
|
exportprivate |
Definition at line 103 of file circular_buffer.h.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::push().
|
exportprivate |
Definition at line 104 of file circular_buffer.h.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked().
|
mutableexportprivate |
Definition at line 102 of file circular_buffer.h.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::empty(), kcenon::common::utils::CircularBuffer< T, Capacity >::full(), kcenon::common::utils::CircularBuffer< T, Capacity >::pop(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::size().
|
exportprivate |
Definition at line 106 of file circular_buffer.h.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::empty(), kcenon::common::utils::CircularBuffer< T, Capacity >::full(), kcenon::common::utils::CircularBuffer< T, Capacity >::is_full_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::pop_locked(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::size().
|
exportprivate |
Definition at line 105 of file circular_buffer.h.
Referenced by kcenon::common::utils::CircularBuffer< T, Capacity >::push(), and kcenon::common::utils::CircularBuffer< T, Capacity >::push().