24 #include <gui_utils/avahi_dispatcher.h>
25 #include <netcomm/service_discovery/service.h>
39 dispatcher_all_for_now_.connect(sigc::mem_fun(*
this, &AvahiDispatcher::on_all_for_now));
40 dispatcher_cache_exhausted_.connect(sigc::mem_fun(*
this, &AvahiDispatcher::on_cache_exhausted));
41 dispatcher_browse_failed_.connect(sigc::mem_fun(*
this, &AvahiDispatcher::on_browse_failed));
42 dispatcher_service_added_.connect(sigc::mem_fun(*
this, &AvahiDispatcher::on_service_added));
43 dispatcher_service_removed_.connect(sigc::mem_fun(*
this, &AvahiDispatcher::on_service_removed));
52 return signal_all_for_now_;
61 return signal_cache_exhausted_;
70 return signal_browse_failed_;
76 sigc::signal<void, NetworkService *>
79 return signal_service_added_;
85 sigc::signal<void, NetworkService *>
88 return signal_service_removed_;
94 dispatcher_all_for_now_();
100 dispatcher_cache_exhausted_();
106 dispatcher_browse_failed_();
113 const char * host_name,
114 const char * interface,
115 const struct sockaddr * addr,
116 const socklen_t addr_size,
118 std::list<std::string> &txt,
122 queue_service_added_.push_locked(s);
123 dispatcher_service_added_();
130 queue_service_removed_.push_locked(s);
131 dispatcher_service_removed_();
135 AvahiDispatcher::on_all_for_now()
137 signal_all_for_now_.emit();
141 AvahiDispatcher::on_cache_exhausted()
143 signal_cache_exhausted_.emit();
147 AvahiDispatcher::on_browse_failed()
149 signal_browse_failed_.emit();
153 AvahiDispatcher::on_service_added()
155 queue_service_added_.lock();
156 while (!queue_service_added_.empty()) {
157 NetworkService *s = queue_service_added_.front();
158 signal_service_added_.emit(s);
160 queue_service_added_.pop();
162 queue_service_added_.unlock();
166 AvahiDispatcher::on_service_removed()
168 queue_service_removed_.lock();
169 while (!queue_service_removed_.empty()) {
170 NetworkService *s = queue_service_removed_.front();
171 signal_service_removed_.emit(s);
173 queue_service_removed_.pop();
175 queue_service_removed_.unlock();