21#ifndef HEDGEHOG_DEFAULT_SENDER_H
22#define HEDGEHOG_DEFAULT_SENDER_H
24#include "../implementor/implementor_sender.h"
25#include "../implementor/implementor_receiver.h"
31namespace implementor {
38 std::unique_ptr<std::set<abstraction::ReceiverAbstraction<Output> *>>
const
44 :
receivers_(std::make_unique<std::set<abstraction::ReceiverAbstraction<Output> *>>()) {}
51 [[nodiscard]] std::set<abstraction::ReceiverAbstraction<Output> *>
const &
connectedReceivers()
const override {
65 void send(std::shared_ptr<Output> data)
override {
66 for (
auto const &receiver : *
receivers_) { receiver->receive(data); }
Core's abstraction to receive a piece of data.
Default concrete implementation of sender abstraction.
DefaultSender()
Default constructor.
virtual ~DefaultSender()=default
Default destructor.
void send(std::shared_ptr< Output > data) override
Send a piece of data to all connected receivers.
std::unique_ptr< std::set< abstraction::ReceiverAbstraction< Output > * > > const receivers_
List of receivers.
void addReceiver(abstraction::ReceiverAbstraction< Output > *receiver) override
Add a receiver to the list.
void removeReceiver(abstraction::ReceiverAbstraction< Output > *receiver) override
Remove a receiver to the list.
std::set< abstraction::ReceiverAbstraction< Output > * > const & connectedReceivers() const override
Accessor to the connected receivers.
Implementor for the SenderAbstraction.