MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ process()

void MayaFlux::Kakshya::DataProcessingChain::process ( const std::shared_ptr< SignalSourceContainer > &  container)

Processes a container with all its associated processors in sequence.

Parameters
containerThe signal container to process.

Definition at line 76 of file DataProcessingChain.cpp.

77{
78 bool expected = false;
79 if (!m_is_processing.compare_exchange_strong(expected, true,
80 std::memory_order_acquire, std::memory_order_relaxed)) {
81 return;
82 }
83
84 auto it = m_container_processors.find(container);
85 if (it != m_container_processors.end()) {
86 for (auto& processor : it->second) {
87 processor->process(container);
88 }
89 }
90
91 m_is_processing.store(false, std::memory_order_release);
93}
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.

References drain_pending_removals(), m_container_processors, and m_is_processing.

+ Here is the call graph for this function: