21#ifndef HEDGEHOG_IMPLEMENTOR_NOTIFIER_H
22#define HEDGEHOG_IMPLEMENTOR_NOTIFIER_H
33namespace abstraction {
37namespace implementor {
41 std::unique_ptr<std::set<abstraction::NotifierAbstraction *>>
47 :
abstractNotifiers_(std::make_unique<std::set<abstraction::NotifierAbstraction *>>()) {}
64 [[nodiscard]]
virtual std::set<abstraction::SlotAbstraction *>
const &
connectedSlots()
const = 0;
Core abstraction to notify slots.
Core's abstraction to receive a signal.
Implementor for the NotifierAbstraction.
virtual void notifyAllTerminated()=0
Notify the connected slots that this notifier is terminated.
virtual void addSlot(abstraction::SlotAbstraction *slot)=0
Add a slot to the connected slots.
virtual void initialize(abstraction::NotifierAbstraction *notifierAbstraction)
Initialize the implementor Notifier by setting the corresponding abstraction.
std::set< abstraction::NotifierAbstraction * > & notifiers()
Accessor to the linked NotifierAbstraction.
virtual ~ImplementorNotifier()=default
Default destructor.
ImplementorNotifier()
Default constructor.
virtual void notify()=0
Notify the connected slots to wake up.
virtual std::set< abstraction::SlotAbstraction * > const & connectedSlots() const =0
Accessor to the connected slots.
std::unique_ptr< std::set< abstraction::NotifierAbstraction * > > abstractNotifiers_
Set of linked NotifierAbstraction.
virtual void removeSlot(abstraction::SlotAbstraction *slot)=0
Remove a slot to the connected slots.