12#ifndef RTCTK_COMPONENTFRAMEWORK_BUFFERMANAGER_HPP
13#define RTCTK_COMPONENTFRAMEWORK_BUFFERMANAGER_HPP
15#include "numapp/memory.hpp"
16#include "numapp/mempolicy.hpp"
21#include <boost/lockfree/policies.hpp>
22#include <boost/lockfree/stack.hpp>
26#include <gtest/gtest.h>
82 const std::shared_ptr<BufferStorage> m_storage;
96 const std::string& description,
99 const std::optional<numapp::MemPolicy>&
policy = {});
105 std::shared_ptr<BufferReference>
Get();
113 class BufferStorage {
116 BufferStorage() =
delete;
117 BufferStorage(
const BufferStorage&) =
delete;
118 BufferStorage& operator=(
const BufferStorage&) =
delete;
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;
149 const std::string m_description;
Header file for Buffer Monitor.
Definition bufferManager.hpp:55
void operator=(BufferReference &&)=delete
Buffer GetBuffer() const
Return span to the buffer.
Definition bufferManager.cpp:119
BufferReference(BufferReference &&)=delete
void operator=(const BufferReference &)=delete
~BufferReference()
Definition bufferManager.cpp:123
BufferReference(const BufferReference &)=delete
BufferManager is a class that will allocate a big buffer and spit it up in several cache-aligned sub-...
Definition bufferManager.hpp:46
gsl::span< uint8_t > Buffer
The span definition of a subbuffer.
Definition bufferManager.hpp:54
std::shared_ptr< BufferReference > Get()
Get a new buffer from the pool, throws when no buffers are available.
Definition bufferManager.cpp:65
std::shared_ptr< BufferReference > BlockingGet()
Same as get, but will not throw but blocks until buffer is free.
Definition bufferManager.cpp:74
Component metrics interface.
Definition componentMetricsIf.hpp:85
Definition bufferManager.hpp:32
NoBufferAvailableException(const std::string &buffer_name)
Definition bufferManager.cpp:20
The RtctkException class is the base class for all Rtctk exceptions.
Definition exceptions.hpp:211
Header file for ComponentMetricsIf.
Provides macros and utilities for exception handling.
Definition commandReplier.cpp:22
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23