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()) {
92 InterfaceDispatcher::setup_signals()
95 dispatcher_message_received_.connect(
112 message_enqueueing_ = enqueue;
121 queue_data_changed_.lock();
122 while (!queue_data_changed_.empty()) {
123 Interface *iface = queue_data_changed_.front();
124 signal_data_changed_.emit(iface);
125 queue_data_changed_.pop();
127 queue_data_changed_.unlock();
136 queue_message_received_.lock();
137 while (!queue_message_received_.empty()) {
138 std::pair<Interface *, Message *> p = queue_message_received_.front();
139 signal_message_received_.emit(p.first, p.second);
141 queue_message_received_.pop();
143 queue_message_received_.unlock();
152 queue_writer_added_.lock();
153 while (!queue_writer_added_.empty()) {
154 Interface *iface = queue_writer_added_.front();
155 signal_writer_added_.emit(iface);
156 queue_writer_added_.pop();
158 queue_writer_added_.unlock();
167 queue_writer_removed_.lock();
168 while (!queue_writer_removed_.empty()) {
169 Interface *iface = queue_writer_removed_.front();
170 signal_writer_removed_.emit(iface);
171 queue_writer_removed_.pop();
173 queue_writer_removed_.unlock();
182 queue_reader_added_.lock();
183 while (!queue_reader_added_.empty()) {
184 Interface *iface = queue_reader_added_.front();
185 signal_reader_added_.emit(iface);
186 queue_reader_added_.pop();
188 queue_reader_added_.unlock();
197 queue_reader_removed_.lock();
198 while (!queue_reader_removed_.empty()) {
199 Interface *iface = queue_reader_removed_.front();
200 signal_reader_removed_.emit(iface);
201 queue_reader_removed_.pop();
203 queue_reader_removed_.unlock();
209 queue_data_changed_.push_locked(interface);
210 dispatcher_data_changed_();
217 queue_message_received_.push_locked(std::make_pair(interface, message));
218 dispatcher_message_received_();
219 return message_enqueueing_;
224 unsigned int instance_serial)
throw()
226 queue_writer_added_.push_locked(interface);
227 dispatcher_writer_added_();
232 unsigned int instance_serial)
throw()
234 queue_writer_removed_.push_locked(interface);
235 dispatcher_writer_removed_();
240 unsigned int instance_serial)
throw()
242 queue_reader_added_.push_locked(interface);
243 dispatcher_reader_added_();
248 unsigned int instance_serial)
throw()
250 queue_reader_removed_.push_locked(interface);
251 dispatcher_reader_removed_();
258 sigc::signal<void, Interface *>
261 return signal_data_changed_;
270 sigc::signal<void, Interface *, Message *>
273 return signal_message_received_;
280 sigc::signal<void, Interface *>
283 return signal_writer_added_;
290 sigc::signal<void, Interface *>
293 return signal_writer_removed_;
300 sigc::signal<void, Interface *>
303 return signal_reader_added_;
310 sigc::signal<void, Interface *>
313 return signal_reader_removed_;