19#ifndef HEDGEHOG_EXECUTION_PIPELINE_OUTPUTS_MANAGEMENT_ABSTRACTION_H_
20#define HEDGEHOG_EXECUTION_PIPELINE_OUTPUTS_MANAGEMENT_ABSTRACTION_H_
22#include "../base/input_output/notifier_abstraction.h"
23#include "../base/input_output/sender_abstraction.h"
24#include "../../implementors/concrete_implementor/graph/graph_notifier.h"
25#include "../../implementors/concrete_implementor/graph/graph_sender.h"
33namespace abstraction {
37template<
class ...Outputs>
46 SenderAbstraction<Outputs>(std::make_shared<implementor::GraphSender<Outputs>>())...{}
55 for(
auto outputNodeNotifier : coreGraph->notifiers()){
56 this->
notifiers().insert(outputNodeNotifier);
71 template <
class Output>
73 for(
auto outputNodeSender : coreGraphSender->senders()){
Core abstraction to notify slots.
void duplicateEdgeNotifier(std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)
Duplicate edges of the current notifier to slots to clone in map.
std::set< NotifierAbstraction * > const & notifiers() const
Const accessor to notifiers.
Core abstraction to send data.
void duplicateEdgeSender(std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)
Duplicate edges of the current sender to receiver to clone in map.
Base core node abstraction.
Output management abstraction for the execution pipeline.
ExecutionPipelineOutputsManagementAbstraction()
Default constructor.
void duplicateOutputEdges(std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)
Duplicate output edges.
~ExecutionPipelineOutputsManagementAbstraction() override=default
Default destructor.
void registerGraphOutputNodes(std::shared_ptr< GraphOutputsManagementAbstraction< Outputs... > > coreGraph)
Register output node as output of the execution pipeline.
void registerGraphSender(std::shared_ptr< SenderAbstraction< Output > > coreGraphSender)
Register output node as output of the execution pipeline for a type.
Output management abstraction for the grpah.