iceoryx_posh 2.0.3
Public Member Functions | Protected Member Functions | Friends | List of all members
iox::roudi::MemoryBlock Class Referenceabstract

The MemoryBlock is a container for general purpose memory. It is used to request some memory from a MemoryProvider, which can be POSIX SHM, the stack or something completely different. To be able to use the container, some functions need to be implemented. For most use cases the GenericMemoryBlock can be used, which is a templated class and implements the most common case. More...

#include <iceoryx_posh/roudi/memory/memory_block.hpp>

Inheritance diagram for iox::roudi::MemoryBlock:
Inheritance graph
[legend]

Public Member Functions

 MemoryBlock (const MemoryBlock &)=delete
 
 MemoryBlock (MemoryBlock &&)=delete
 
MemoryBlockoperator= (const MemoryBlock &)=delete
 
MemoryBlockoperator= (MemoryBlock &&)=delete
 
virtual uint64_t size () const noexcept=0
 This function provides the size of the required memory for the underlying data. It is needed for the MemoryProvider to calculate the total size of memory. More...
 
virtual uint64_t alignment () const noexcept=0
 This function provides the alignment of the memory for the underlying data. This information is needed for the MemoryProvider. More...
 
cxx::optional< void * > memory () const noexcept
 This function provides the pointer to the requested memory. More...
 

Protected Member Functions

virtual void destroy () noexcept=0
 The MemoryProvider calls this either when MemoryProvider::destroy is called or in its destructor. More...
 
virtual void onMemoryAvailable (cxx::not_null< void * > memory) noexcept
 This function is called once the memory is available and is therefore the earliest possibility to use the memory. More...
 

Friends

class MemoryProvider
 

Detailed Description

The MemoryBlock is a container for general purpose memory. It is used to request some memory from a MemoryProvider, which can be POSIX SHM, the stack or something completely different. To be able to use the container, some functions need to be implemented. For most use cases the GenericMemoryBlock can be used, which is a templated class and implements the most common case.

Constructor & Destructor Documentation

◆ MemoryBlock()

iox::roudi::MemoryBlock::MemoryBlock ( const MemoryBlock )
delete
Note
this is intentional not movable/copyable, since a pointer to the memory block is registered at a MemoryProvider and therefore an instance of a MemoryBlock must be pinned to memory

Member Function Documentation

◆ alignment()

virtual uint64_t iox::roudi::MemoryBlock::alignment ( ) const
pure virtualnoexcept

This function provides the alignment of the memory for the underlying data. This information is needed for the MemoryProvider.

Returns
the alignment of the underlying data.

Implemented in iox::roudi::GenericMemoryBlock< T >.

◆ destroy()

virtual void iox::roudi::MemoryBlock::destroy ( )
protectedpure virtualnoexcept

The MemoryProvider calls this either when MemoryProvider::destroy is called or in its destructor.

Note
This function can be called multiple times. Make sure that the implementation can handle this.

Implemented in iox::roudi::GenericMemoryBlock< T >.

◆ memory()

cxx::optional< void * > iox::roudi::MemoryBlock::memory ( ) const
noexcept

This function provides the pointer to the requested memory.

Returns
an optional pointer to a memory block with the requested size and alignment if the memory is available, otherwise a cxx::nullopt_t

◆ onMemoryAvailable()

virtual void iox::roudi::MemoryBlock::onMemoryAvailable ( cxx::not_null< void * >  memory)
protectedvirtualnoexcept

This function is called once the memory is available and is therefore the earliest possibility to use the memory.

Parameters
[in]memorypointer to a valid memory block, the same one that the memory() member function would return

◆ size()

virtual uint64_t iox::roudi::MemoryBlock::size ( ) const
pure virtualnoexcept

This function provides the size of the required memory for the underlying data. It is needed for the MemoryProvider to calculate the total size of memory.

Returns
the required memory as multiple of the alignment

Implemented in iox::roudi::GenericMemoryBlock< T >.


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