1 #ifndef _SERVICE_DISCOVERY_SERVICEBROWSER_H_ 2 #define _SERVICE_DISCOVERY_SERVICEBROWSER_H_ 16 #include <boost/thread.hpp> 17 #include <sigc++/sigc++.h> 18 #include <avahi-client/client.h> 19 #include <service_discovery/impl/avahi/RemoteService.hpp> 20 #include <service_discovery/impl/avahi/Client.hpp> 21 #include <service_discovery/utils/List.hpp> 22 #include <service_discovery/impl/avahi/Service.hpp> 49 AvahiIfIndex interface;
51 AvahiProtocol protocol;
55 AvahiLookupFlags flags;
59 AvahiServiceBrowser *browser;
65 boost::mutex mServicesMutex;
67 const char* getInType() {
71 const char* getInDomain() {
75 return domain.c_str();
81 sigc::signal<void, RemoteService> ServiceAdded;
84 sigc::signal<void, RemoteService> ServiceRemoved;
87 sigc::signal<void, RemoteService> ServiceUpdated;
89 boost::mutex mServiceAddedMutex;
90 boost::mutex mServiceRemovedMutex;
91 boost::mutex mServiceUpdateMutex;
98 const int static MAX_RESOLVER_TRIES = 5;
120 AvahiIfIndex interface,
121 AvahiProtocol protocol,
124 AvahiLookupFlags flags,
144 boost::unique_lock<boost::mutex> lock(mServiceAddedMutex);
145 ServiceAdded.connect(slot_);
149 boost::unique_lock<boost::mutex> lock(mServiceAddedMutex);
150 ServiceAdded.emit(rms);
155 boost::unique_lock<boost::mutex> lock(mServiceRemovedMutex);
156 ServiceRemoved.connect(slot_);
160 boost::unique_lock<boost::mutex> lock(mServiceRemovedMutex);
161 ServiceRemoved.emit(rms);
165 boost::unique_lock<boost::mutex> lock(mServiceUpdateMutex);
166 ServiceUpdated.connect(slot_);
170 boost::unique_lock<boost::mutex> lock(mServiceUpdateMutex);
171 ServiceUpdated.emit(rms);
176 boost::unique_lock<boost::mutex> lock(mServicesMutex);
189 return mServicesMutex;
205 static void browseCallback(AvahiServiceBrowser *sb, AvahiIfIndex interface, AvahiProtocol protocol,
206 AvahiBrowserEvent event,
const char *name,
const char *type,
const char *domain,
207 AvahiLookupResultFlags flags,
void *userdata);
209 static void resolveCallback(AvahiServiceResolver *sr, AvahiIfIndex interface, AvahiProtocol protocol,
210 AvahiResolverEvent event,
const char *name,
const char *type,
const char *domain,
const char *host,
211 const AvahiAddress *address, uint16_t port, AvahiStringList *list, AvahiLookupResultFlags flags,
void *userdata);
List< RemoteService > getServices()
Definition: ServiceBrowser.hpp:174
Client represent a wrapper to access the avahi_client (a singleton). Every avahi program must set up ...
Definition: Client.hpp:64
ServiceBrowser * serviceBrowser
Definition: ServiceBrowser.hpp:32
class for handling service that are found and resolved by the service browsers
Definition: RemoteService.hpp:31
struct used to count failed attempts of service resolution
Definition: ServiceBrowser.hpp:31
Client * getClient()
Definition: ServiceBrowser.hpp:199
AvahiServiceBrowser * getAvahiBrowser()
Definition: ServiceBrowser.hpp:194
void serviceAddedConnect(const sigc::slot< void, RemoteService > &slot_)
Definition: ServiceBrowser.hpp:143
List< RemoteService > * getInternalServices()
Definition: ServiceBrowser.hpp:182
void serviceRemovedEmit(RemoteService rms)
Definition: ServiceBrowser.hpp:159
Definition: ServiceBrowser.hpp:42
void serviceAddedEmit(RemoteService rms)
Definition: ServiceBrowser.hpp:148
void serviceUpdatedEmit(RemoteService rms)
Definition: ServiceBrowser.hpp:169
void serviceUpdatedConnect(const sigc::slot< void, RemoteService > &slot_)
Definition: ServiceBrowser.hpp:164
boost::mutex & getServicesMutex()
Definition: ServiceBrowser.hpp:187
int count
Definition: ServiceBrowser.hpp:33
void serviceRemovedConnect(const sigc::slot< void, RemoteService > &slot_)
Definition: ServiceBrowser.hpp:154