SourceXtractorPlusPlus  0.11
Please provide a description of the project.
Observable.h
Go to the documentation of this file.
1 
23 #ifndef _SEUTILS_OBSERVABLE_H
24 #define _SEUTILS_OBSERVABLE_H
25 
26 #include <memory>
27 #include <list>
28 
29 namespace SourceXtractor {
30 
37 template <class T>
38 class Observer {
39 public:
40  virtual ~Observer() = default;
41  virtual void handleMessage(const T& message) = 0;
42 };
43 
50 template<class T>
51 class Observable {
52 
53 public:
54 
56  virtual ~Observable() = default;
57 
59  virtual void addObserver(std::shared_ptr<Observer<T>> observer) {
60  m_observers.push_back(observer);
61  }
62 
64  virtual void removeObserver(std::shared_ptr<Observer<T>> observer) {
65  m_observers.remove(observer);
66  }
67 
68 protected:
69 
70  // Notify all registered Observers with the given message
71  void notifyObservers(const T& message) const {
72  for (auto& observer : m_observers) {
73  observer->handleMessage(message);
74  }
75  }
76 
77 private:
79 
80 }; /* End of Observable class */
81 
82 } /* namespace SourceXtractor */
83 
84 
85 #endif
SourceXtractor::Observable::notifyObservers
void notifyObservers(const T &message) const
Definition: Observable.h:71
SourceXtractor::Observer::handleMessage
virtual void handleMessage(const T &message)=0
SourceXtractor::Observer
Observer interface to be used with Observable to implement the Observer pattern.
Definition: Observable.h:38
std::shared_ptr
STL class.
std::list
STL class.
SourceXtractor
Definition: Aperture.h:30
SourceXtractor::Observable::addObserver
virtual void addObserver(std::shared_ptr< Observer< T >> observer)
Adds an Observer that will be notified when notify Observers is called.
Definition: Observable.h:59
SourceXtractor::Observable::~Observable
virtual ~Observable()=default
Destructor.
SourceXtractor::Observable
Implements the Observer pattern. Notifications will be made using a message of type T.
Definition: Observable.h:51
SourceXtractor::Observable::removeObserver
virtual void removeObserver(std::shared_ptr< Observer< T >> observer)
Removes a previously added Observer from the list of Observers to notify.
Definition: Observable.h:64
SourceXtractor::Observable::m_observers
std::list< std::shared_ptr< Observer< T > > > m_observers
Definition: Observable.h:78
SourceXtractor::Observer::~Observer
virtual ~Observer()=default