IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ippl::BufferHandler< MemorySpace > Class Template Referenceabstract

Interface for memory buffer handling. More...

#include <BufferHandler.h>

+ Inheritance diagram for ippl::BufferHandler< MemorySpace >:

Public Types

using archive_type = ippl::detail::Archive< MemorySpace >
 
using buffer_type = std::shared_ptr< archive_type >
 
using size_type = ippl::detail::size_type
 

Public Member Functions

virtual buffer_type getBuffer (size_type size, double overallocation)=0
 Requests a memory buffer of a specified size.
 
virtual void freeBuffer (buffer_type buffer)=0
 Frees a specified buffer.
 
virtual void freeAllBuffers ()=0
 Frees all currently used buffers.
 
virtual void deleteAllBuffers ()=0
 Deletes all buffers.
 
virtual size_type getUsedSize () const =0
 Gets the size of all buffers in use.
 
virtual size_type getFreeSize () const =0
 Gets the size of all free buffers.
 

Detailed Description

template<typename MemorySpace>
class ippl::BufferHandler< MemorySpace >

Interface for memory buffer handling.

Defines methods for acquiring, freeing, and managing memory buffers. Implementations are responsible for managing buffers efficiently, ensuring that allocated buffers are reused where possible.

Template Parameters
MemorySpaceThe memory space type used for buffer allocation.

Member Function Documentation

◆ deleteAllBuffers()

template<typename MemorySpace >
virtual void ippl::BufferHandler< MemorySpace >::deleteAllBuffers ( )
pure virtual

Deletes all buffers.

Releases all allocated memory buffers, both used and free. After this call, no buffers are available until new allocations.

Implemented in ippl::DefaultBufferHandler< MemorySpace >, and ippl::LoggingBufferHandler< MemorySpace >.

◆ freeAllBuffers()

template<typename MemorySpace >
virtual void ippl::BufferHandler< MemorySpace >::freeAllBuffers ( )
pure virtual

Frees all currently used buffers.

Transfers all used buffers to the free state, making them available for reuse. This does not deallocate memory but resets buffer usage.

Implemented in ippl::DefaultBufferHandler< MemorySpace >, and ippl::LoggingBufferHandler< MemorySpace >.

◆ freeBuffer()

template<typename MemorySpace >
virtual void ippl::BufferHandler< MemorySpace >::freeBuffer ( buffer_type  buffer)
pure virtual

Frees a specified buffer.

Moves the specified buffer to a free state, making it available for reuse in future buffer requests.

Parameters
bufferThe buffer to be freed.

Implemented in ippl::DefaultBufferHandler< MemorySpace >, and ippl::LoggingBufferHandler< MemorySpace >.

◆ getBuffer()

template<typename MemorySpace >
virtual buffer_type ippl::BufferHandler< MemorySpace >::getBuffer ( size_type  size,
double  overallocation 
)
pure virtual

Requests a memory buffer of a specified size.

Provides a buffer of at least the specified size, with the option to allocate additional space based on an overallocation multiplier. This function attempts to reuse available buffers if possible.

Parameters
sizeThe required size of the buffer, in bytes.
overallocationA multiplier to allocate extra space, which may help avoid frequent reallocation in some use cases.
Returns
A shared pointer to the allocated buffer.

Implemented in ippl::DefaultBufferHandler< MemorySpace >, and ippl::LoggingBufferHandler< MemorySpace >.

◆ getFreeSize()

template<typename MemorySpace >
virtual size_type ippl::BufferHandler< MemorySpace >::getFreeSize ( ) const
pure virtual

Gets the size of all free buffers.

Returns
Total size of free buffers in bytes.

Implemented in ippl::DefaultBufferHandler< MemorySpace >, and ippl::LoggingBufferHandler< MemorySpace >.

◆ getUsedSize()

template<typename MemorySpace >
virtual size_type ippl::BufferHandler< MemorySpace >::getUsedSize ( ) const
pure virtual

Gets the size of all buffers in use.

Returns
Total size of buffers that are in use in bytes.

Implemented in ippl::DefaultBufferHandler< MemorySpace >, and ippl::LoggingBufferHandler< MemorySpace >.


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