17 #ifndef IOX_POSH_POPO_BUILDING_BLOCKS_CHUNK_QUEUE_DATA_HPP
18 #define IOX_POSH_POPO_BUILDING_BLOCKS_CHUNK_QUEUE_DATA_HPP
20 #include "iceoryx_posh/iceoryx_posh_types.hpp"
21 #include "iceoryx_posh/internal/mepoo/shm_safe_unmanaged_chunk.hpp"
22 #include "iceoryx_posh/internal/popo/building_blocks/condition_notifier.hpp"
23 #include "iceoryx_posh/internal/popo/building_blocks/condition_variable_data.hpp"
24 #include "iceoryx_posh/popo/port_queue_policies.hpp"
25 #include "iceoryx_utils/cxx/variant_queue.hpp"
26 #include "iceoryx_utils/internal/relocatable_pointer/relative_pointer.hpp"
27 #include "iceoryx_utils/posix_wrapper/semaphore.hpp"
33 template <
typename ChunkQueueDataProperties,
typename LockingPolicy>
37 using LockGuard_t = std::lock_guard<const ThisType_t>;
38 using ChunkQueueDataProperties_t = ChunkQueueDataProperties;
40 ChunkQueueData(
const QueueFullPolicy policy,
const cxx::VariantQueueTypes queueType) noexcept;
42 static constexpr uint64_t MAX_CAPACITY = ChunkQueueDataProperties_t::MAX_QUEUE_CAPACITY;
43 cxx::VariantQueue<mepoo::ShmSafeUnmanagedChunk, MAX_CAPACITY> m_queue;
44 std::atomic_bool m_queueHasLostChunks{
false};
46 rp::RelativePointer<ConditionVariableData> m_conditionVariableDataPtr;
47 cxx::optional<uint64_t> m_conditionVariableNotificationIndex;
48 const QueueFullPolicy m_queueFullPolicy;
54 #include "iceoryx_posh/internal/popo/building_blocks/chunk_queue_data.inl"
Definition: service_description.hpp:29
Definition: chunk_queue_data.hpp:35