IPPL (Independent Parallel Particle Layer)
IPPL
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 >:
Collaboration 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 ~BufferHandler ()
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.

Definition at line 21 of file BufferHandler.h.

Member Typedef Documentation

◆ archive_type

template<typename MemorySpace>
using ippl::BufferHandler< MemorySpace >::archive_type = ippl::detail::Archive<MemorySpace>

Definition at line 23 of file BufferHandler.h.

◆ buffer_type

template<typename MemorySpace>
using ippl::BufferHandler< MemorySpace >::buffer_type = std::shared_ptr<archive_type>

Definition at line 24 of file BufferHandler.h.

◆ size_type

template<typename MemorySpace>
using ippl::BufferHandler< MemorySpace >::size_type = ippl::detail::size_type

Definition at line 25 of file BufferHandler.h.

Constructor & Destructor Documentation

◆ ~BufferHandler()

template<typename MemorySpace>
virtual ippl::BufferHandler< MemorySpace >::~BufferHandler ( )
inlinevirtual

Definition at line 27 of file BufferHandler.h.

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: