Fawkes API  Fawkes Development Version
avahi_dispatcher.h
1 
2 /***************************************************************************
3  * avahi_dispatcher.h - Avahi browser handler and dispatcher
4  *
5  * Created: Wed Nov 05 11:30:13 2008
6  * Copyright 2008 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef _LIBS_GUI_UTILS_AVAHI_DISPATCHER_H_
25 #define _LIBS_GUI_UTILS_AVAHI_DISPATCHER_H_
26 
27 #include <core/utils/lock_queue.h>
28 #include <glibmm/dispatcher.h>
29 #include <netcomm/service_discovery/browse_handler.h>
30 
31 #include <cstddef>
32 
33 namespace fawkes {
34 class AvahiThread;
35 class NetworkService;
36 
38 {
39 public:
41 
42  sigc::signal<void> signal_all_for_now();
43  sigc::signal<void> signal_cache_exhausted();
44  sigc::signal<void> signal_browse_failed();
45  sigc::signal<void, NetworkService *> signal_service_added();
46  sigc::signal<void, NetworkService *> signal_service_removed();
47 
48  // from ServiceBrowseHandler
49  virtual void all_for_now();
50  virtual void cache_exhausted();
51  virtual void browse_failed(const char *name, const char *type, const char *domain);
52  virtual void service_added(const char * name,
53  const char * type,
54  const char * domain,
55  const char * host_name,
56  const char * interface,
57  const struct sockaddr * addr,
58  const socklen_t addr_size,
59  uint16_t port,
60  std::list<std::string> &txt,
61  int flags);
62  virtual void service_removed(const char *name, const char *type, const char *domain);
63 
64 private:
65  virtual void on_all_for_now();
66  virtual void on_cache_exhausted();
67  virtual void on_browse_failed();
68  virtual void on_service_added();
69  virtual void on_service_removed();
70 
71 private:
72  Glib::Dispatcher dispatcher_all_for_now_;
73  Glib::Dispatcher dispatcher_cache_exhausted_;
74  Glib::Dispatcher dispatcher_browse_failed_;
75  Glib::Dispatcher dispatcher_service_added_;
76  Glib::Dispatcher dispatcher_service_removed_;
77 
78  sigc::signal<void> signal_all_for_now_;
79  sigc::signal<void> signal_cache_exhausted_;
80  sigc::signal<void> signal_browse_failed_;
81  sigc::signal<void, NetworkService *> signal_service_added_;
82  sigc::signal<void, NetworkService *> signal_service_removed_;
83 
84  LockQueue<NetworkService *> queue_service_added_;
85  LockQueue<NetworkService *> queue_service_removed_;
86 };
87 
88 } // end namespace fawkes
89 
90 #endif
virtual void cache_exhausted()
Cache exhausted.
sigc::signal< void > signal_cache_exhausted()
Get "cache exhausted" signal.
Fawkes library namespace.
sigc::signal< void > signal_all_for_now()
Get "all for now" signal.
virtual void service_removed(const char *name, const char *type, const char *domain)
A service has been removed from the network.
virtual void all_for_now()
All results have been retrieved.
Interface for class that process browse results.
sigc::signal< void, NetworkService * > signal_service_removed()
Get "service remove" signal.
virtual void browse_failed(const char *name, const char *type, const char *domain)
Failed to browse for a given service.
virtual void service_added(const char *name, const char *type, const char *domain, const char *host_name, const char *interface, const struct sockaddr *addr, const socklen_t addr_size, uint16_t port, std::list< std::string > &txt, int flags)
A service has been announced on the network.
sigc::signal< void > signal_browse_failed()
Get "browse failed" signal.
Queue with a lock.
Definition: lock_queue.h:44
sigc::signal< void, NetworkService * > signal_service_added()
Get "service added" signal.