24 #include <gui_utils/interface_dispatcher.h>
25 #include <interface/interface.h>
48 bool message_enqueueing)
51 __message_enqueueing = message_enqueueing;
72 std::list<Interface *> ifaces,
73 bool message_enqueueing)
76 __message_enqueueing = message_enqueueing;
78 std::list<Interface *>::iterator i;
79 for (i = ifaces.begin(); i != ifaces.end(); ++i) {
81 if ( (*i)->is_writer() ) {
93 InterfaceDispatcher::setup_signals()
112 __message_enqueueing = enqueue;
122 __queue_data_changed.lock();
123 while (! __queue_data_changed.empty()) {
124 Interface *iface = __queue_data_changed.front();
125 __signal_data_changed.emit(iface);
126 __queue_data_changed.pop();
128 __queue_data_changed.unlock();
138 __queue_message_received.lock();
139 while (! __queue_message_received.empty()) {
140 std::pair<Interface *, Message *> p = __queue_message_received.front();
141 __signal_message_received.emit(p.first, p.second);
143 __queue_message_received.pop();
145 __queue_message_received.unlock();
155 __queue_writer_added.lock();
156 while (! __queue_writer_added.empty()) {
157 Interface *iface = __queue_writer_added.front();
158 __signal_writer_added.emit(iface);
159 __queue_writer_added.pop();
161 __queue_writer_added.unlock();
171 __queue_writer_removed.lock();
172 while (! __queue_writer_removed.empty()) {
173 Interface *iface = __queue_writer_removed.front();
174 __signal_writer_removed.emit(iface);
175 __queue_writer_removed.pop();
177 __queue_writer_removed.unlock();
187 __queue_reader_added.lock();
188 while (! __queue_reader_added.empty()) {
189 Interface *iface = __queue_reader_added.front();
190 __signal_reader_added.emit(iface);
191 __queue_reader_added.pop();
193 __queue_reader_added.unlock();
203 __queue_reader_removed.lock();
204 while (! __queue_reader_removed.empty()) {
205 Interface *iface = __queue_reader_removed.front();
206 __signal_reader_removed.emit(iface);
207 __queue_reader_removed.pop();
209 __queue_reader_removed.unlock();
216 __queue_data_changed.push_locked(interface);
217 __dispatcher_data_changed();
224 __queue_message_received.push_locked(std::make_pair(interface, message));
225 __dispatcher_message_received();
226 return __message_enqueueing;
231 unsigned int instance_serial)
throw()
233 __queue_writer_added.push_locked(interface);
234 __dispatcher_writer_added();
239 unsigned int instance_serial)
throw()
241 __queue_writer_removed.push_locked(interface);
242 __dispatcher_writer_removed();
247 unsigned int instance_serial)
throw()
249 __queue_reader_added.push_locked(interface);
250 __dispatcher_reader_added();
255 unsigned int instance_serial)
throw()
257 __queue_reader_removed.push_locked(interface);
258 __dispatcher_reader_removed();
265 sigc::signal<void, Interface *>
268 return __signal_data_changed;
278 sigc::signal<void, Interface *, Message *>
281 return __signal_message_received;
289 sigc::signal<void, Interface *>
292 return __signal_writer_added;
300 sigc::signal<void, Interface *>
303 return __signal_writer_removed;
311 sigc::signal<void, Interface *>
314 return __signal_reader_added;
322 sigc::signal<void, Interface *>
325 return __signal_reader_removed;