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);
85 std::optional<T>
Poll(std::chrono::milliseconds timeout = std::chrono::milliseconds::zero());
96 const std::unique_ptr<std::scoped_lock<std::recursive_mutex>>
Lock()
const;
114 boost::circular_buffer<T>&
GetCb();
135 const log4cplus::Logger m_logger;
140 std::atomic<bool> m_closed;
148 boost::circular_buffer<T> cb;
163 mutable std::recursive_mutex mutex;
171 std::condition_variable_any buffer_not_empty;
177 std::function<void(T&)> discard_listener;
182 const std::string name;
void Close()
Definition circularBufferConcurrent.ipp:47
int Size() const
Definition circularBufferConcurrent.ipp:154
const std::unique_ptr< std::scoped_lock< std::recursive_mutex > > Lock() const
Definition circularBufferConcurrent.ipp:161
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:115
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:173
~CircularBufferConcurrent()
Definition circularBufferConcurrent.ipp:41
void Clear()
Definition circularBufferConcurrent.ipp:147
void SetDiscardListener(std::function< void(T &)> discard_listener)
Definition circularBufferConcurrent.ipp:167
void Push(T &&data)
Adds new data to the circular buffer.
Definition circularBufferConcurrent.ipp:83
Definition ciiOldbDataPointAsync.hpp:35
ccsinsdetifllnetio::PointingKernelPositions data
Definition pkp_llnetio_subscriber.cpp:29