MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Kakshya::DataProcessingChain Class Reference

Manages collection of data processors or flexible, composable pipelines. More...

#include <DataProcessingChain.hpp>

+ Collaboration diagram for MayaFlux::Kakshya::DataProcessingChain:

Public Member Functions

 DataProcessingChain ()=default
 
void add_processor (std::shared_ptr< DataProcessor > processor, std::shared_ptr< SignalSourceContainer > container, const std::string &tag="")
 Adds a processor to the chain for a specific container.
 
void add_processor_at (std::shared_ptr< DataProcessor > processor, std::shared_ptr< SignalSourceContainer > container, size_t position)
 Adds a processor at a specific position in the chain.
 
void remove_processor (std::shared_ptr< DataProcessor > processor, std::shared_ptr< SignalSourceContainer > container)
 Removes a processor from a container's chain.
 
void process (std::shared_ptr< SignalSourceContainer > container)
 Processes a container with all its associated processors, in sequence.
 
template<typename ProcessorType >
void process_typed (std::shared_ptr< SignalSourceContainer > container)
 Processes a container with processors of a specific type.
 
void process_filtered (std::shared_ptr< SignalSourceContainer > container, std::function< bool(std::shared_ptr< DataProcessor >)> filter)
 Processes a container with processors that match a filter function.
 
void process_tagged (std::shared_ptr< SignalSourceContainer > container, const std::string &tag)
 Processes a container with processors that have a specific tag.
 

Private Attributes

std::unordered_map< std::shared_ptr< SignalSourceContainer >, std::vector< std::shared_ptr< DataProcessor > > > m_container_processors
 Maps containers to their associated processors in sequence order.
 
std::unordered_map< std::shared_ptr< DataProcessor >, std::string > m_processor_tags
 Maps processors to their associated tags for categorization and filtering.
 

Detailed Description

Manages collection of data processors or flexible, composable pipelines.

DataProcessingChain orchestrates collections of DataProcessor objects, enabling the construction of modular, extensible, and container-specific processing pipelines. Unlike traditional analog "signal chains," this class is designed for digital-first workflows, supporting dynamic, data-driven processing scenarios unconstrained by fixed or linear analog metaphors.

Key features:

  • Container-specific chains: Each SignalSourceContainer can have its own unique sequence of processors, supporting heterogeneous and context-aware processing across the system.
  • Dynamic composition: Processors can be added, removed, or reordered at runtime, enabling adaptive workflows and on-the-fly reconfiguration.
  • Type-based and tag-based filtering: Processors can be grouped and selectively applied based on type or user-defined tags, supporting advanced routing, conditional processing, and logical grouping.
  • Custom filtering: Arbitrary filter functions allow for runtime selection of processors based on data characteristics, state, or external criteria.
  • Composable with digital-first nodes, routines, and buffer systems: Designed to integrate seamlessly with the broader Maya Flux ecosystem, enabling robust, data-driven orchestration of complex workflows.

This abstraction enables advanced scenarios such as:

  • Multi-stage, container-specific data transformation pipelines
  • Selective or conditional processing based on data type, tag, or runtime state
  • Integration of analysis, transformation, and feature extraction in a unified pipeline
  • Dynamic adaptation to changing data, user interaction, or system state

DataProcessingChain is foundational for building scalable, maintainable, and future-proof data processing architectures in digital-first, data-driven applications.

Definition at line 37 of file DataProcessingChain.hpp.


The documentation for this class was generated from the following files: