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.