Skip to content

iox::popo::ChunkDistributorData🔗

More...

Inherits from LockingPolicy

Inherited by iox::popo::ChunkSenderData< MAX_REQUESTS_ALLOCATED_SIMULTANEOUSLY, ClientChunkDistributorData_t >, iox::popo::ChunkSenderData< MAX_RESPONSES_ALLOCATED_SIMULTANEOUSLY, ServerChunkDistributorData_t >

Public Types🔗

Name
using ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType > ThisType_t
using std::lock_guard< const ThisType_t > LockGuard_t
using ChunkQueuePusherType ChunkQueuePusher_t
using typename ChunkQueuePusherType::MemberType_t ChunkQueueData_t
using ChunkDistributorDataProperties ChunkDistributorDataProperties_t
using cxx::vector< rp::RelativePointer< ChunkQueueData_t >, ChunkDistributorDataProperties_t::MAX_QUEUES > QueueContainer_t
using cxx::vector< mepoo::ShmSafeUnmanagedChunk, ChunkDistributorDataProperties_t::MAX_HISTORY_CAPACITY > HistoryContainer_t

Public Functions🔗

Name
ChunkDistributorData(const SubscriberTooSlowPolicy policy, const uint64_t historyCapacity =0u)

Public Attributes🔗

Name
const uint64_t m_historyCapacity
QueueContainer_t m_queues
HistoryContainer_t m_history
const SubscriberTooSlowPolicy m_subscriberTooSlowPolicy

Detailed Description🔗

template <typename ChunkDistributorDataProperties ,
typename LockingPolicy ,
typename ChunkQueuePusherType >
struct iox::popo::ChunkDistributorData;

Public Types Documentation🔗

using ThisType_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::ThisType_t =  ChunkDistributorData<ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType>;

using LockGuard_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::LockGuard_t =  std::lock_guard<const ThisType_t>;

using ChunkQueuePusher_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::ChunkQueuePusher_t =  ChunkQueuePusherType;

using ChunkQueueData_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::ChunkQueueData_t =  typename ChunkQueuePusherType::MemberType_t;

using ChunkDistributorDataProperties_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::ChunkDistributorDataProperties_t =  ChunkDistributorDataProperties;

using QueueContainer_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::QueueContainer_t =  cxx::vector<rp::RelativePointer<ChunkQueueData_t>, ChunkDistributorDataProperties_t::MAX_QUEUES>;

using HistoryContainer_t🔗

using iox::popo::ChunkDistributorData< ChunkDistributorDataProperties, LockingPolicy, ChunkQueuePusherType >::HistoryContainer_t =  cxx::vector<mepoo::ShmSafeUnmanagedChunk, ChunkDistributorDataProperties_t::MAX_HISTORY_CAPACITY>;

Todo: If we would make the ChunkDistributor lock-free, can we than extend the UsedChunkList to be like a ring buffer and use this for the history? This would be needed to be able to safely cleanup. Using ShmSafeUnmanagedChunk since RouDi must access this list to cleanup the chunks in case of an application crash.

Public Functions Documentation🔗

function ChunkDistributorData🔗

inline ChunkDistributorData(
    const SubscriberTooSlowPolicy policy,
    const uint64_t historyCapacity =0u
)

Public Attributes Documentation🔗

variable m_historyCapacity🔗

const uint64_t m_historyCapacity;

variable m_queues🔗

QueueContainer_t m_queues;

variable m_history🔗

HistoryContainer_t m_history;

variable m_subscriberTooSlowPolicy🔗

const SubscriberTooSlowPolicy m_subscriberTooSlowPolicy;

Updated on 26 April 2021 at 15:31:02 CEST