Qore DataProvider Module Reference 3.0
Loading...
Searching...
No Matches
Observable.qc.dox.h
1// -*- mode: c++; indent-tabs-mode: nil -*-
3
26namespace DataProvider {
29
30public:
31protected:
33 hash<string, hash<ObserverEventInfo>> observer_map;
34
35public:
36
38
44 registerObserver(Observer observer, ...);
45
46
48
54 registerObserver(object observer, ...);
55
56
58
63 registerObserverArgs(Observer observer, *list<auto> event_ids);
64
65
67
72 registerObserverArgs(object observer, *list<auto> event_ids);
73
74
76
84
85
87
94 registerObserverWithFilter(object observer, AbstractEventFilter filter, ...);
95
96
98
104 registerObserverWithFilterArgs(Observer observer, AbstractEventFilter filter, *list<auto> event_ids);
105
106
108
114 registerObserverWithFilter(object observer, AbstractEventFilter filter, list<auto> event_ids);
115
116
118
123
124
126
132 bool deregisterObserver(object observer);
133
134
136
139 notifyObservers(string event_id, hash<auto> data_);
140
141
143
147 log(int level, string fmt, ...);
148
149
151
153 bool isActive();
154
155
157protected:
158 hash<ObserverEventInfo> registerObserverEventsArgs(hash<ObserverEventInfo> info, list<auto> events);
159public:
160
161};
162
165
166public:
168
170 abstract observersReady();
171
173
176
177};
178
181
182public:
184 abstract bool filter(string event_id, hash<auto> event);
185};
186};
187
188// private namespace; not exported
189namespace Priv {
190// Stores an observer with any subscribed events
191hashdecl ObserverEventInfo {
192 // Observer
193 Observer observer;
194
195 // event filter object
196 *AbstractEventFilter filter;
197
198 // Map of subscribed event IDs; if the map is empty, then all events are registered
199 hash<string, bool> event_map;
200}
201
202// wraps a foreign observer object as an Observer
203class ObserverWrapper : public Observer {
204
205public:
206protected:
207 object obj;
208
209public:
210
211 // creates the wrapper object
212 constructor(object obj);
213
214
215 // calls the wrapped object's update method
216 update(string event_id, hash<auto> data_);
217
218};
219}
This abstract class can be used to filter events that are raised on an Observer.
Definition Observable.qc.dox.h:180
abstract bool filter(string event_id, hash< auto > event)
If this returns True, then the event is raised.
This class represents an observable subject that waits for external confirmation before raising event...
Definition Observable.qc.dox.h:164
abstract observersReady()
Called when all observers have been added to the object.
stopEvents()
Called to stop generating events.
This class represents an observable subject that will notify all of its registered observers.
Definition Observable.qc.dox.h:28
registerObserverWithFilter(object observer, AbstractEventFilter filter,...)
The method registers the given observer.
hash< ObserverEventInfo > registerObserverEventsArgs(hash< ObserverEventInfo > info, list< auto > events)
Registers observer events.
registerObserverArgs(object observer, *list< auto > event_ids)
The method registers the given observer.
registerObserverWithFilter(object observer, AbstractEventFilter filter, list< auto > event_ids)
The method registers the given observer.
registerObserverWithFilterArgs(Observer observer, AbstractEventFilter filter, *list< auto > event_ids)
The method registers the given observer.
registerObserver(Observer observer,...)
The method registers the given observer.
registerObserverArgs(Observer observer, *list< auto > event_ids)
The method registers the given observer.
log(int level, string fmt,...)
Reimplement this method to implement logging.
registerObserver(object observer,...)
The method registers the given observer.
registerObserverWithFilter(Observer observer, AbstractEventFilter filter,...)
The method registers the given observer.
hash< string, hash< ObserverEventInfo > > observer_map
maps from object hash -> object
Definition Observable.qc.dox.h:33
bool deregisterObserver(Observer observer)
The method deregisters the given observer.
bool deregisterObserver(object observer)
The method deregisters the given observer.
bool isActive()
Is this object still generating events.
notifyObservers(string event_id, hash< auto > data_)
The method notifies all subscribed observers.
This abstract class represents an observer that will get notified by the subject it observes.
Definition Observer.qc.dox.h:26
Qore AbstractDataField class definition.
Definition AbstractDataField.qc.dox.h:27
Private definitions.
Definition AbstractDataProviderType.qc.dox.h:454