7 processor->on_attach(container);
15 std::shared_ptr<SignalSourceContainer> container,
18 processor->on_attach(container);
21 if (position >= processors.size()) {
22 processors.push_back(processor);
24 processors.insert(processors.begin() + position, processor);
32 auto& processors = it->second;
33 auto proc_it = std::find(processors.begin(), processors.end(), processor);
35 if (proc_it != processors.end()) {
36 processor->on_detach(container);
37 processors.erase(proc_it);
39 if (processors.empty()) {
50 for (
auto& processor : it->second) {
51 processor->process(container);
60 for (
auto& processor : it->second) {
61 if (filter(processor)) {
62 processor->process(container);
72 for (
auto& processor : it->second) {
75 processor->process(container);
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.
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.
std::unordered_map< std::shared_ptr< DataProcessor >, std::string > m_processor_tags
Maps processors to their associated tags for categorization and filtering.
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.
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.