00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __LIBS_GUI_UTILS_AVAHI_DISPATCHER_H_
00025 #define __LIBS_GUI_UTILS_AVAHI_DISPATCHER_H_
00026
00027 #include <glibmm/dispatcher.h>
00028 #include <netcomm/service_discovery/browse_handler.h>
00029 #include <core/utils/lock_queue.h>
00030
00031 namespace fawkes {
00032 #if 0
00033 }
00034 #endif
00035 class AvahiThread;
00036 class NetworkService;
00037
00038 class AvahiDispatcher
00039 : public ServiceBrowseHandler
00040 {
00041 public:
00042 AvahiDispatcher();
00043
00044 sigc::signal<void> signal_all_for_now();
00045 sigc::signal<void> signal_cache_exhausted();
00046 sigc::signal<void> signal_browse_failed();
00047 sigc::signal<void, NetworkService *> signal_service_added();
00048 sigc::signal<void, NetworkService *> signal_service_removed();
00049
00050
00051
00052 virtual void all_for_now();
00053 virtual void cache_exhausted();
00054 virtual void browse_failed(const char *name,
00055 const char *type,
00056 const char *domain);
00057 virtual void service_added(const char *name,
00058 const char *type,
00059 const char *domain,
00060 const char *host_name,
00061 const struct sockaddr *addr,
00062 const socklen_t addr_size,
00063 uint16_t port,
00064 std::list<std::string> &txt,
00065 int flags);
00066 virtual void service_removed(const char *name,
00067 const char *type,
00068 const char *domain);
00069
00070
00071 private:
00072 virtual void on_all_for_now();
00073 virtual void on_cache_exhausted();
00074 virtual void on_browse_failed();
00075 virtual void on_service_added();
00076 virtual void on_service_removed();
00077
00078 private:
00079 Glib::Dispatcher __dispatcher_all_for_now;
00080 Glib::Dispatcher __dispatcher_cache_exhausted;
00081 Glib::Dispatcher __dispatcher_browse_failed;
00082 Glib::Dispatcher __dispatcher_service_added;
00083 Glib::Dispatcher __dispatcher_service_removed;
00084
00085 sigc::signal<void> __signal_all_for_now;
00086 sigc::signal<void> __signal_cache_exhausted;
00087 sigc::signal<void> __signal_browse_failed;
00088 sigc::signal<void, NetworkService *> __signal_service_added;
00089 sigc::signal<void, NetworkService *> __signal_service_removed;
00090
00091 LockQueue<NetworkService *> __queue_service_added;
00092 LockQueue<NetworkService *> __queue_service_removed;
00093 };
00094
00095 }
00096
00097 #endif