11#ifndef RTCTK_COMPONENTFRAMEWORK_BUFFERMANAGER_HPP
12#define RTCTK_COMPONENTFRAMEWORK_BUFFERMANAGER_HPP
14#include "numapp/mempolicy.hpp"
19#include <boost/lockfree/policies.hpp>
20#include <boost/lockfree/stack.hpp>
24#include <gtest/gtest.h>
80 const std::shared_ptr<BufferStorage> m_storage;
94 const std::string& description,
95 const std::string& prefix,
97 const std::optional<numapp::MemPolicy>& policy = {});
103 std::shared_ptr<BufferReference>
Get();
111 class BufferStorage {
114 BufferStorage() =
delete;
115 BufferStorage(
const BufferStorage&) =
delete;
116 BufferStorage& operator=(
const BufferStorage&) =
delete;
122 std::shared_ptr<uint8_t[]> buffer_storage);
126 void Return(
Buffer buffer);
134 std::optional<Buffer> Get();
141 boost::lockfree::stack<Buffer, boost::lockfree::fixed_sized<true>> m_buffer_stack;
142 std::shared_ptr<uint8_t[]> m_buffer_storage;
143 std::atomic<size_t> m_used;
146 std::shared_ptr<BufferStorage> m_storage;
147 const size_t m_buffers;
148 BufferMonitor<> m_buffer_monitor;
149 const std::string m_description;
151 FRIEND_TEST(TestBufferManager, Internal);
Header file for Buffer Monitor.
void operator=(BufferReference &&)=delete
Buffer GetBuffer() const
Return span to the buffer.
Definition bufferManager.cpp:117
BufferReference(BufferReference &&)=delete
void operator=(const BufferReference &)=delete
~BufferReference()
Definition bufferManager.cpp:121
BufferReference(const BufferReference &)=delete
gsl::span< uint8_t > Buffer
The span definition of a subbuffer.
Definition bufferManager.hpp:52
std::shared_ptr< BufferReference > Get()
Get a new buffer from the pool, throws when no buffers are available.
Definition bufferManager.cpp:62
std::shared_ptr< BufferReference > BlockingGet()
Same as get, but will not throw but blocks until buffer is free.
Definition bufferManager.cpp:71
Component metrics interface.
Definition componentMetricsIf.hpp:163
NoBufferAvailableException(const std::string &buffer_name)
Definition bufferManager.cpp:21
RtctkException() noexcept
Definition exceptions.cpp:112
Header file for ComponentMetricsIf.
Provides macros and utilities for exception handling.
Definition commandReplier.cpp:21