BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
Notifier.h
Go to the documentation of this file.
1#ifndef _BPMNOS_Execution_Notifier_H
2#define _BPMNOS_Execution_Notifier_H
3
4#include <vector>
5#include <list>
6#include "Observable.h"
7#include "Observer.h"
8
9namespace BPMNOS::Execution {
10
11class Notifier {
12public:
13 Notifier();
14 virtual ~Notifier() = default;
15
16 template<typename... ObservableTypes>
17 void addSubscriber(Observer* subscriber, ObservableTypes... observableTypes) {
18 (subscribers[(size_t)observableTypes].push_back(subscriber), ...);
19 }
20
21 template<typename... ObservableTypes>
22 void removeSubscriber(Observer* subscriber, ObservableTypes... observableTypes) {
23 (subscribers[(size_t)observableTypes].remove(subscriber), ...);
24 }
25
26 void notify(const Observable* observable) const;
27 void notify(const Observable& observable) const;
28private:
29 std::vector< std::list<Observer*> > subscribers;
30};
31
32} // namespace BPMNOS::Execution
33#endif // _BPMNOS_Execution_Notifier_H
void notify(const Observable *observable) const
Definition Notifier.cpp:10
void removeSubscriber(Observer *subscriber, ObservableTypes... observableTypes)
Definition Notifier.h:22
void addSubscriber(Observer *subscriber, ObservableTypes... observableTypes)
Definition Notifier.h:17
virtual ~Notifier()=default