|
MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
|
Manages collections of DataProcessor objects as composable, container-specific pipelines. More...
#include <DataProcessingChain.hpp>
Collaboration diagram for MayaFlux::Kakshya::DataProcessingChain:Public Member Functions | |
| void | add_processor (const std::shared_ptr< DataProcessor > &processor, const std::shared_ptr< SignalSourceContainer > &container, const std::string &tag="") |
| Adds a processor to the end of the chain for a specific container. | |
| void | add_processor_at (const std::shared_ptr< DataProcessor > &processor, const std::shared_ptr< SignalSourceContainer > &container, size_t position) |
| Adds a processor at a specific position in the chain. | |
| DataProcessingChain ()=default | |
| void | process (const std::shared_ptr< SignalSourceContainer > &container) |
| Processes a container with all its associated processors in sequence. | |
| void | process_filtered (const std::shared_ptr< SignalSourceContainer > &container, const std::function< bool(const std::shared_ptr< DataProcessor > &)> &filter) |
| Processes a container with only the processors matching a filter predicate. | |
| void | process_tagged (const std::shared_ptr< SignalSourceContainer > &container, const std::string &tag) |
| Processes a container with only the processors carrying a specific tag. | |
| template<typename ProcessorType > | |
| void | process_typed (const std::shared_ptr< SignalSourceContainer > &container) |
| Processes a container with only processors of a specific derived type. | |
| void | remove_processor (const std::shared_ptr< DataProcessor > &processor, const std::shared_ptr< SignalSourceContainer > &container) |
| Removes a processor from a container's chain. | |
Private Member Functions | |
| void | drain_pending_removals () |
| Flushes all removals deferred during the most recent process iteration. | |
| void | remove_processor_direct (const std::shared_ptr< DataProcessor > &processor, const std::shared_ptr< SignalSourceContainer > &container) |
| Performs immediate removal of a processor from the chain. | |
Private Attributes | |
| 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 { false } |
| Guards all process variants against concurrent or re-entrant iteration. | |
| std::vector< std::pair< std::shared_ptr< DataProcessor >, std::shared_ptr< SignalSourceContainer > > > | m_pending_removal |
| Removals deferred because they arrived during active iteration. | |
| std::unordered_map< std::shared_ptr< DataProcessor >, std::string > | m_processor_tags |
| Maps processors to their optional tag strings. | |
Manages collections of DataProcessor objects as composable, container-specific pipelines.
Each SignalSourceContainer maintains its own ordered processor sequence. Processors can be added, removed, or reordered at runtime. All process variants guard against iterator invalidation via an atomic processing flag; removal requests that arrive mid-iteration are deferred and drained after the loop completes.
Definition at line 16 of file DataProcessingChain.hpp.