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
33namespace fawkes {
34class AvahiThread;
35class NetworkService;
36
38{
39public:
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
64private:
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
71private:
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
sigc::signal< void > signal_all_for_now()
Get "all for now" signal.
virtual void all_for_now()
All results have been retrieved.
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.
sigc::signal< void > signal_cache_exhausted()
Get "cache exhausted" signal.
virtual void browse_failed(const char *name, const char *type, const char *domain)
Failed to browse for a given service.
virtual void cache_exhausted()
Cache exhausted.
virtual void service_removed(const char *name, const char *type, const char *domain)
A service has been removed from the network.
sigc::signal< void, NetworkService * > signal_service_removed()
Get "service remove" signal.
sigc::signal< void, NetworkService * > signal_service_added()
Get "service added" signal.
Queue with a lock.
Definition: lock_queue.h:45
Interface for class that process browse results.
Fawkes library namespace.