17 #ifndef IOX_POSH_POPO_BUILDING_BLOCKS_CHUNK_RECEIVER_HPP
18 #define IOX_POSH_POPO_BUILDING_BLOCKS_CHUNK_RECEIVER_HPP
20 #include "iceoryx_posh/internal/popo/building_blocks/chunk_queue_popper.hpp"
21 #include "iceoryx_posh/internal/popo/building_blocks/chunk_receiver_data.hpp"
22 #include "iceoryx_posh/mepoo/chunk_header.hpp"
23 #include "iceoryx_utils/cxx/expected.hpp"
24 #include "iceoryx_utils/cxx/helplets.hpp"
25 #include "iceoryx_utils/cxx/optional.hpp"
31 enum class ChunkReceiveResult
34 TOO_MANY_CHUNKS_HELD_IN_PARALLEL,
44 template <
typename ChunkReceiverDataType>
48 using MemberType_t = ChunkReceiverDataType;
51 explicit ChunkReceiver(cxx::not_null<MemberType_t* const> chunkReceiverDataPtr) noexcept;
64 cxx::expected<const mepoo::ChunkHeader*, ChunkReceiveResult>
tryGet() noexcept;
76 const MemberType_t* getMembers()
const noexcept;
77 MemberType_t* getMembers() noexcept;
83 #include "iceoryx_posh/internal/popo/building_blocks/chunk_receiver.inl"
The ChunkQueuePopper is the low layer building block to receive SharedChunks. It follows a first-in-f...
Definition: chunk_queue_popper.hpp:37
The ChunkReceiver is a building block of the shared memory communication infrastructure....
Definition: chunk_receiver.hpp:46
void releaseAll() noexcept
Release all the chunks that are currently held. Caution: Only call this if the user process is no mor...
Definition: chunk_receiver.inl:86
cxx::expected< const mepoo::ChunkHeader *, ChunkReceiveResult > tryGet() noexcept
Tries to get the next received chunk. If there is a new one the ChunkHeader of this new chunk is rece...
Definition: chunk_receiver.inl:50
void release(const mepoo::ChunkHeader *const chunkHeader) noexcept
Release a chunk that was obtained with get.
Definition: chunk_receiver.inl:75
Definition: service_description.hpp:29