11#ifndef HLCC_OLDBMUX_CIRCULARBUFFERCONCURRENT_HPP
12#define HLCC_OLDBMUX_CIRCULARBUFFERCONCURRENT_HPP
15#include <condition_variable>
19#include <log4cplus/logger.h>
20#include <rad/logger.hpp>
22#include <boost/circular_buffer.hpp>
58 const log4cplus::Logger& logger);
84 std::optional<T>
Poll(std::chrono::milliseconds timeout = std::chrono::milliseconds::zero());
95 const std::unique_ptr<std::scoped_lock<std::recursive_mutex>>
Lock()
const;
113 boost::circular_buffer<T>&
GetCb();
119 const log4cplus::Logger m_logger;
126 boost::circular_buffer<T> cb;
141 mutable std::recursive_mutex mutex;
149 std::condition_variable_any buffer_not_empty;
155 std::function<void(T&)> discard_listener;
160 const std::string name;
A first-in first-out buffer with a fixed size that replaces its oldest element if full.
Definition circularBufferConcurrent.hpp:54
int Size() const
Definition circularBufferConcurrent.ipp:97
const std::unique_ptr< std::scoped_lock< std::recursive_mutex > > Lock() const
Definition circularBufferConcurrent.ipp:104
CircularBufferConcurrent(const CircularBufferConcurrent &)=delete
std::optional< T > Poll(std::chrono::milliseconds timeout=std::chrono::milliseconds::zero())
Gets the oldest element from the circular buffer.
Definition circularBufferConcurrent.ipp:71
CircularBufferConcurrent & operator=(const CircularBufferConcurrent &)=delete
CircularBufferConcurrent(const std::string &name, std::size_t capacity, const log4cplus::Logger &logger)
Definition circularBufferConcurrent.ipp:24
boost::circular_buffer< T > & GetCb()
Definition circularBufferConcurrent.ipp:116
~CircularBufferConcurrent()
Definition circularBufferConcurrent.ipp:40
void Clear()
Definition circularBufferConcurrent.ipp:90
void SetDiscardListener(std::function< void(T &)> discard_listener)
Definition circularBufferConcurrent.ipp:110
void Push(T &&data)
Adds new data to the circular buffer.
Definition circularBufferConcurrent.ipp:46
Definition ciiOldbDataPointAsync.hpp:34
ccsinsdetifllnetio::PointingKernelPositions data
Definition pkp_llnetio_subscriber.cpp:33