NebulaStream  0.6.213
NebulaStream is a data and application management framework for the internet of things
NES::Runtime::LocalBufferPool Class Reference

A local buffer pool that uses N exclusive buffers and then falls back to the global buffer manager. More...

#include <LocalBufferPool.hpp>

Collaboration diagram for NES::Runtime::LocalBufferPool:
[legend]

Public Member Functions

 LocalBufferPool (const BufferManagerPtr &bufferManager, std::deque< detail::MemorySegment * > &&availableBuffers, size_t numberOfReservedBuffers)
 Construct a new LocalBufferPool. More...
 
 ~LocalBufferPool () override
 
void destroy () override
 Destroys this buffer pool and returns own buffers to global pool. More...
 
TupleBuffer getBufferBlocking () override
 Provides a new TupleBuffer. This blocks until a buffer is available. More...
 
size_t getBufferSize () const override
 
size_t getNumOfPooledBuffers () const override
 
size_t getNumOfUnpooledBuffers () const override
 
std::optional< TupleBuffergetBufferNoBlocking () override
 Returns a new TupleBuffer wrapped in an optional or an invalid option if there is no buffer. More...
 
std::optional< TupleBuffergetBufferTimeout (std::chrono::milliseconds timeout_ms) override
 Returns a new Buffer wrapped in an optional or an invalid option if there is no buffer available within timeout_ms. More...
 
std::optional< TupleBuffergetUnpooledBuffer (size_t bufferSize) override
 Returns an unpooled buffer of size bufferSize wrapped in an optional or an invalid option if an error occurs. More...
 
size_t getAvailableBuffers () const override
 provide number of available exclusive buffers More...
 
void recyclePooledBuffer (detail::MemorySegment *memSegment) override
 Recycle a pooled buffer that is might be exclusive to the pool. More...
 
void recycleUnpooledBuffer (detail::MemorySegment *buffer) override
 This calls is not supported and raises Runtime error. More...
 
virtual BufferManagerType getBufferManagerType () const override
 
- Public Member Functions inherited from NES::Runtime::AbstractBufferProvider
virtual ~AbstractBufferProvider ()
 

Detailed Description

A local buffer pool that uses N exclusive buffers and then falls back to the global buffer manager.

Constructor & Destructor Documentation

◆ LocalBufferPool()

NES::Runtime::LocalBufferPool::LocalBufferPool ( const BufferManagerPtr bufferManager,
std::deque< detail::MemorySegment * > &&  availableBuffers,
size_t  numberOfReservedBuffers 
)
explicit

Construct a new LocalBufferPool.

Parameters
bufferManagerthe global buffer manager
availableBuffersdeque of exclusive buffers
numberOfReservedBuffersnumber of exclusive bufferss

References NES_ASSERT2_FMT, and NES_VERIFY.

◆ ~LocalBufferPool()

NES::Runtime::LocalBufferPool::~LocalBufferPool ( )
override

Member Function Documentation

◆ destroy()

void NES::Runtime::LocalBufferPool::destroy ( )
overridevirtual

Destroys this buffer pool and returns own buffers to global pool.

Implements NES::Runtime::AbstractBufferProvider.

References NES_ASSERT2_FMT, and NES_DEBUG.

◆ getAvailableBuffers()

size_t NES::Runtime::LocalBufferPool::getAvailableBuffers ( ) const
overridevirtual

provide number of available exclusive buffers

Returns
number of available exclusive buffers

Implements NES::Runtime::AbstractBufferProvider.

◆ getBufferBlocking()

TupleBuffer NES::Runtime::LocalBufferPool::getBufferBlocking ( )
overridevirtual

Provides a new TupleBuffer. This blocks until a buffer is available.

Returns
a new buffer

Implements NES::Runtime::AbstractBufferProvider.

References NES_THROW_RUNTIME_ERROR, and NES_VERIFY.

◆ getBufferManagerType()

BufferManagerType NES::Runtime::LocalBufferPool::getBufferManagerType ( ) const
overridevirtual

◆ getBufferNoBlocking()

std::optional< TupleBuffer > NES::Runtime::LocalBufferPool::getBufferNoBlocking ( )
overridevirtual

Returns a new TupleBuffer wrapped in an optional or an invalid option if there is no buffer.

Returns
a new buffer

Implements NES::Runtime::AbstractBufferProvider.

References NES_ASSERT2_FMT.

◆ getBufferSize()

size_t NES::Runtime::LocalBufferPool::getBufferSize ( ) const
overridevirtual
Returns
Configured size of the buffers

Implements NES::Runtime::AbstractBufferProvider.

◆ getBufferTimeout()

std::optional< TupleBuffer > NES::Runtime::LocalBufferPool::getBufferTimeout ( std::chrono::milliseconds  timeout_ms)
overridevirtual

Returns a new Buffer wrapped in an optional or an invalid option if there is no buffer available within timeout_ms.

Parameters
timeout_msthe amount of time to wait for a new buffer to be retuned
Returns
a new buffer

Implements NES::Runtime::AbstractBufferProvider.

References NES_ASSERT2_FMT.

◆ getNumOfPooledBuffers()

size_t NES::Runtime::LocalBufferPool::getNumOfPooledBuffers ( ) const
overridevirtual
Returns
Number of total buffers in the pool

Implements NES::Runtime::AbstractBufferProvider.

◆ getNumOfUnpooledBuffers()

size_t NES::Runtime::LocalBufferPool::getNumOfUnpooledBuffers ( ) const
overridevirtual
Returns
number of unpooled buffers

Implements NES::Runtime::AbstractBufferProvider.

◆ getUnpooledBuffer()

std::optional< TupleBuffer > NES::Runtime::LocalBufferPool::getUnpooledBuffer ( size_t  bufferSize)
overridevirtual

Returns an unpooled buffer of size bufferSize wrapped in an optional or an invalid option if an error occurs.

Parameters
bufferSize
Returns
a new buffer

Implements NES::Runtime::AbstractBufferProvider.

References size().

Here is the call graph for this function:

◆ recyclePooledBuffer()

void NES::Runtime::LocalBufferPool::recyclePooledBuffer ( detail::MemorySegment memSegment)
overridevirtual

Recycle a pooled buffer that is might be exclusive to the pool.

Parameters
buffer

Implements NES::Runtime::BufferRecycler.

References NES_THROW_RUNTIME_ERROR, and NES_VERIFY.

◆ recycleUnpooledBuffer()

void NES::Runtime::LocalBufferPool::recycleUnpooledBuffer ( detail::MemorySegment buffer)
overridevirtual

This calls is not supported and raises Runtime error.

Parameters
buffer

Implements NES::Runtime::BufferRecycler.

References NES_THROW_RUNTIME_ERROR.


The documentation for this class was generated from the following files: