21#ifndef HEDGEHOG_IMPLEMENTOR_SENDER_H 
   22#define HEDGEHOG_IMPLEMENTOR_SENDER_H 
   32namespace implementor {
 
   34#ifndef DOXYGEN_SHOULD_SKIP_THIS 
   38class ImplementorReceiver;
 
   46  std::unique_ptr<std::set<abstraction::SenderAbstraction<Output> *>>
 
   52      : 
abstractSenders_(std::make_unique<std::set<abstraction::SenderAbstraction<Output> *>>()) {}
 
   69  [[nodiscard]] 
virtual std::set<abstraction::ReceiverAbstraction<Output> *> 
const &
connectedReceivers() 
const = 0;
 
   81  virtual void send(std::shared_ptr<Output> data) = 0;
 
Core's abstraction to receive a piece of data.
Core abstraction to send data.
Implementor for the SenderAbstraction.
virtual void addReceiver(abstraction::ReceiverAbstraction< Output > *receiver)=0
Add a receiver to the set of connected receivers.
virtual void removeReceiver(abstraction::ReceiverAbstraction< Output > *receiver)=0
Remove a receiver to the set of connected receivers.
virtual void send(std::shared_ptr< Output > data)=0
Send a data to successor node.
virtual std::set< abstraction::ReceiverAbstraction< Output > * > const & connectedReceivers() const =0
Accessor to the connected receivers.
std::unique_ptr< std::set< abstraction::SenderAbstraction< Output > * > > abstractSenders_
Linked SenderAbstraction.
ImplementorSender()
Default constructor.
std::set< abstraction::SenderAbstraction< Output > * > & senders()
Accessor to the SenderAbstraction.
virtual void initialize(abstraction::SenderAbstraction< Output > *senderAbstraction)
Initialize the implementor Sender by setting the corresponding abstraction.
virtual ~ImplementorSender()=default
Default destructor.