1#ifndef IPPL_BUFFER_HANDLER_H
2#define IPPL_BUFFER_HANDLER_H
20 template <
typename MemorySpace>
24 using buffer_type = std::shared_ptr<archive_type>;
25 using size_type = ippl::detail::size_type;
41 virtual buffer_type
getBuffer(size_type size,
double overallocation) = 0;
94 template <
typename MemorySpace>
98 using typename BufferHandler<MemorySpace>::buffer_type;
99 using typename BufferHandler<MemorySpace>::size_type;
116 buffer_type
getBuffer(size_type size,
double overallocation)
override;
144 using buffer_comparator_type = bool (*)(
const buffer_type&,
const buffer_type&);
145 using buffer_set_type = std::set<buffer_type, buffer_comparator_type>;
147 static bool bufferSizeComparator(
const buffer_type& lhs,
const buffer_type& rhs);
149 bool isBufferUsed(buffer_type buffer)
const;
150 void releaseUsedBuffer(buffer_type buffer);
151 buffer_type findFreeBuffer(size_type requiredSize);
152 typename buffer_set_type::iterator findSmallestSufficientBuffer(size_type requiredSize);
153 buffer_type getFreeBuffer(buffer_type buffer);
154 buffer_type reallocateLargestFreeBuffer(size_type requiredSize);
155 buffer_type allocateNewBuffer(size_type requiredSize);
157 size_type usedSize_m;
158 size_type freeSize_m;
162 &DefaultBufferHandler::bufferSizeComparator};
164 &DefaultBufferHandler::bufferSizeComparator};
168#include "Communicate/BufferHandler.hpp"
Interface for memory buffer handling.
Definition BufferHandler.h:21
virtual size_type getFreeSize() const =0
Gets the size of all free buffers.
virtual void deleteAllBuffers()=0
Deletes all buffers.
virtual void freeAllBuffers()=0
Frees all currently used buffers.
virtual void freeBuffer(buffer_type buffer)=0
Frees a specified buffer.
virtual buffer_type getBuffer(size_type size, double overallocation)=0
Requests a memory buffer of a specified size.
virtual size_type getUsedSize() const =0
Gets the size of all buffers in use.
Concrete implementation of BufferHandler for managing memory buffers.
Definition BufferHandler.h:95
size_type getUsedSize() const override
Gets the size of all buffers in use.
Definition BufferHandler.hpp:53
buffer_set_type used_buffers
Set of used buffers.
Definition BufferHandler.h:161
void deleteAllBuffers() override
Deletes all buffers.
Definition BufferHandler.hpp:43
void freeBuffer(buffer_type buffer) override
Frees a specified buffer.
Definition BufferHandler.hpp:27
buffer_type getBuffer(size_type size, double overallocation) override
Acquires a buffer of at least the specified size.
Definition BufferHandler.hpp:11
void freeAllBuffers() override
Frees all currently used buffers.
Definition BufferHandler.hpp:34
buffer_set_type free_buffers
Set of free buffers.
Definition BufferHandler.h:163
size_type getFreeSize() const override
Gets the size of all free buffers.
Definition BufferHandler.hpp:59