CARMA C++
Observable.h
Go to the documentation of this file.
1 
2 #ifndef CARMA_UTIL_OBSERVABLE_H
3 #define CARMA_UTIL_OBSERVABLE_H
4 
5 
22 #include "carma/util/PthreadMutex.h"
23 #include "carma/util/Observer.h"
24 #include <map>
25 #include <vector>
26 
27 
28 namespace carma {
29  namespace util {
30 
41 class Observable {
46  typedef std::map<int, Observer*> Registry;
47 public:
48 
52  Observable();
53 
57  virtual ~Observable();
58 
65  void registerObserver(Observer& observer);
66 
73  void unregisterObserver(Observer& observer);
74 
75 
79  void notifyObservers();
80 
86  int getNumObservers();
87 
91  std::vector<int> registryIds();
92 
96  std::string registryToString();
97 
98 private:
99  Registry registry_;
100  PthreadMutex registryGuard_;
101 
102 };
103 
104 } } // End namespace carma::util
105 
106 
107 
108 #endif // CARMA_UTIL_OBSERVABLE_H
109 
110 
111 
112 
113 
114 
115 
116 
117 
The Observable class is paired with the Observer class, with the Observable class calls its observabl...
Definition: Observable.h:41
void notifyObservers()
Notify all registered Observers, by calling Observer::observerUpdate()
std::string registryToString()
Put all regIDs into a single line string.
An Observer executes a method when an observable event occurs.
void registerObserver(Observer &observer)
Register an Observer object to be notified when event occurs.
Observable()
Constructor.
virtual ~Observable()
Destructor.
int getNumObservers()
Get the number of registered observers.
void unregisterObserver(Observer &observer)
Unregister an Observer object.
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...
Definition: PthreadMutex.h:41
An abstract base class for an implementation of the Observer design pattern.
Definition: Observer.h:34
std::vector< int > registryIds()
Put all regIDs into a vector.