iox::popo::ChunkDistributorData🔗
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 31 May 2022 at 15:29:16 CEST