CARMA C++
ObserverRegistry.h
Go to the documentation of this file.
1 
2 #ifndef CARMA_UTIL_OBSERVERREGISTRY_H
3 #define CARMA_UTIL_OBSERVERREGISTRY_H
4 
5 
23 #include "carma/util/PthreadMutex.h"
24 #include <vector>
25 
26 
27 namespace carma {
28  namespace util {
29 
30 class Observer; // forward declaration
31 
39 public:
40 
44  static ObserverRegistry& instance();
45 
49  virtual ~ObserverRegistry();
50 
56  int registerObserver();
57 
63  void unregisterObserver(int registrationId);
64 
70  int getNumObservers();
71 
75  std::vector<int> registryIds();
76 
80  std::string registryToString();
81 
85  void lock();
86 
90  void unlock();
91 
96  bool isRegistered(int regID);
97 
98 private:
99  /*
100  * Constructor; private so can only be created by instance method
101  */
103 
104  std::vector<int> registry_;
105  int nextRegistrationId_;
106  PthreadMutex registryGuard_;
107 
108 };
109 
110 } } // End namespace carma::util
111 
112 
113 
114 #endif // CARMA_UTIL_OBSERVERREGISTRY_H
115 
116 
117 
118 
119 
120 
121 
122 
123 
int registerObserver()
Register objects to be notified when event occurs.
All instances of the Observer class are assigned an ID and registered within this class...
void unlock()
Unlock the registry.
std::vector< int > registryIds()
Put all regIDs into a vector.
int getNumObservers()
Get the number of registered observers.
virtual ~ObserverRegistry()
Destructor.
void lock()
Lock the registry.
void unregisterObserver(int registrationId)
Unregister objects to be notified when event occurs.
static ObserverRegistry & instance()
Return singleton instance.
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...
Definition: PthreadMutex.h:41
bool isRegistered(int regID)
See if an id is registered.
std::string registryToString()
Put all regIDs into a single line string.