Processes a container with only processors of a specific derived type.
85 {
86 bool expected = false;
88 std::memory_order_acquire, std::memory_order_relaxed)) {
89 return;
90 }
91
94 for (auto& processor : it->second) {
95 if (auto typed = std::dynamic_pointer_cast<ProcessorType>(processor)) {
96 typed->process(container);
97 }
98 }
99 }
100
103 }
void drain_pending_removals()
Flushes all removals deferred during the most recent process iteration.
std::unordered_map< std::shared_ptr< SignalSourceContainer >, std::vector< std::shared_ptr< DataProcessor > > > m_container_processors
Maps each container to its ordered processor sequence.
std::atomic< bool > m_is_processing
Guards all process variants against concurrent or re-entrant iteration.