Hedgehog  3.1.0
A library to generate hybrid pipeline workflow systems
Loading...
Searching...
No Matches
hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs > Class Template Reference

Output management abstraction for the task. More...

#include "task_outputs_management_abstraction.h"

Inheritance diagram for hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >:
Inheritance graph
Collaboration diagram for hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >:
Collaboration graph

Public Types

using outputs_t = std::tuple< Outputs... >
 Accessor to the graph outputs type.
 

Public Member Functions

 TaskOutputsManagementAbstraction ()
 Default constructor.
 
template<hh::tool::ConcreteMultiSenderImplementation< Outputs... > ConcreteMultiSenders>
 TaskOutputsManagementAbstraction (std::shared_ptr< implementor::ImplementorNotifier > concreteNotifier, std::shared_ptr< ConcreteMultiSenders > concreteMultiSenders)
 Constructor using concrete implementation of the possible core abstraction.
 
 ~TaskOutputsManagementAbstraction () override=default
 Default destructor.
 
template<tool::ContainsConcept< Outputs... > OutputDataType>
void sendAndNotify (std::shared_ptr< OutputDataType > data)
 Send a piece of data and notify the successors.
 
- Public Member Functions inherited from hh::core::abstraction::NotifierAbstraction
 NotifierAbstraction (std::shared_ptr< implementor::ImplementorNotifier > notifier)
 Constructor utilising a concrete implementation.
 
virtual ~NotifierAbstraction ()=default
 Default destructor.
 
std::set< NotifierAbstraction * > const & notifiers () const
 Const accessor to notifiers.
 
std::set< NotifierAbstraction * > & notifiers ()
 Accessor to notifiers.
 
void addSlot (SlotAbstraction *const slot)
 Add a SlotAbstraction to this notifier.
 
void removeSlot (SlotAbstraction *const slot)
 Remove SlotAbstraction from this notifier.
 
std::set< SlotAbstraction * > const & connectedSlots () const
 Accessor to the slots attached to this notifier.
 
void notify ()
 Notify a slot to wake up.
 
void notifyAllTerminated ()
 Notifier all slots that this node is terminated.
 
- Public Member Functions inherited from hh::core::abstraction::SenderAbstraction< Outputs >
 SenderAbstraction (std::shared_ptr< implementor::ImplementorSender< Outputs > > concreteSender)
 Constructor using the concrete implementation.
 
virtual ~SenderAbstraction ()=default
 Default destructor.
 
std::set< SenderAbstraction< Outputs > * > const & senders () const
 Const accessor to senders.
 
std::set< SenderAbstraction< Outputs > * > & senders ()
 Accessor to senders.
 
std::set< ReceiverAbstraction< Outputs > * > const & connectedReceivers () const
 Accessor to the receivers attached to this SenderAbstraction.
 
void addReceiver (ReceiverAbstraction< Outputs > *const receiver)
 Add a ReceiverAbstraction.
 
void removeReceiver (ReceiverAbstraction< Outputs > *const receiver)
 Remove a ReceiverAbstraction.
 
void send (std::shared_ptr< Outputs > data)
 Send a data as output of the node.
 

Protected Member Functions

void copyInnerStructure (TaskOutputsManagementAbstraction< Outputs... > *copyableCore)
 Copy the inner structure from another task.
 
void duplicateOutputEdges (std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)
 Duplicate the output edges for the node clone.
 
- Protected Member Functions inherited from hh::core::abstraction::NotifierAbstraction
void duplicateEdgeNotifier (std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)
 Duplicate edges of the current notifier to slots to clone in map.
 
- Protected Member Functions inherited from hh::core::abstraction::SenderAbstraction< Outputs >
void copyInnerStructure (SenderAbstraction< Outputs > *copyableCore)
 Copy inner structure of the sender to this one.
 
void duplicateEdgeSender (std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)
 Duplicate edges of the current sender to receiver to clone in map.
 

Detailed Description

template<class ... Outputs>
class hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >

Output management abstraction for the task.

Template Parameters
OutputsTypes of output data

Definition at line 45 of file task_outputs_management_abstraction.h.

Member Typedef Documentation

◆ outputs_t

template<class ... Outputs>
using hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::outputs_t = std::tuple<Outputs...>

Accessor to the graph outputs type.

Definition at line 47 of file task_outputs_management_abstraction.h.

Constructor & Destructor Documentation

◆ TaskOutputsManagementAbstraction() [1/2]

template<class ... Outputs>
hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::TaskOutputsManagementAbstraction ( )
inline

Default constructor.

Definition at line 50 of file task_outputs_management_abstraction.h.

◆ TaskOutputsManagementAbstraction() [2/2]

template<class ... Outputs>
template<hh::tool::ConcreteMultiSenderImplementation< Outputs... > ConcreteMultiSenders>
hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::TaskOutputsManagementAbstraction ( std::shared_ptr< implementor::ImplementorNotifier concreteNotifier,
std::shared_ptr< ConcreteMultiSenders >  concreteMultiSenders 
)
inline

Constructor using concrete implementation of the possible core abstraction.

Template Parameters
ConcreteMultiSendersType of the concrete implementation of the senders abstraction
Parameters
concreteNotifierConcrete implementation of the notifier abstraction
concreteMultiSendersConcrete implementation of the senders abstraction

Definition at line 59 of file task_outputs_management_abstraction.h.

◆ ~TaskOutputsManagementAbstraction()

template<class ... Outputs>
hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::~TaskOutputsManagementAbstraction ( )
overridedefault

Default destructor.

Member Function Documentation

◆ copyInnerStructure()

template<class ... Outputs>
void hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::copyInnerStructure ( TaskOutputsManagementAbstraction< Outputs... > *  copyableCore)
inlineprotected

Copy the inner structure from another task.

Parameters
copyableCoreCore task to copy inner structure from

Definition at line 81 of file task_outputs_management_abstraction.h.

Here is the call graph for this function:

◆ duplicateOutputEdges()

template<class ... Outputs>
void hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::duplicateOutputEdges ( std::map< abstraction::NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &  mapping)
inlineprotected

Duplicate the output edges for the node clone.

Parameters
mappingMap of the nodes and their clones

Definition at line 87 of file task_outputs_management_abstraction.h.

Here is the call graph for this function:

◆ sendAndNotify()

template<class ... Outputs>
template<tool::ContainsConcept< Outputs... > OutputDataType>
void hh::core::abstraction::TaskOutputsManagementAbstraction< Outputs >::sendAndNotify ( std::shared_ptr< OutputDataType >  data)
inline

Send a piece of data and notify the successors.

Template Parameters
OutputDataTypeType of data
Parameters
dataData to send

Definition at line 72 of file task_outputs_management_abstraction.h.

Here is the call graph for this function: