#pragma once #include #include #include #include #include "Swiften/Base/String.h" #include "Swiften/LinkLocal/DNSSDService.h" #include "Swiften/LinkLocal/DNSSDServiceFactory.h" #include "Swiften/LinkLocal/LinkLocalService.h" namespace Swift { class HostAddress; class LinkLocalServiceBrowser { public: LinkLocalServiceBrowser(DNSSDServiceFactory*); std::vector getServices() const; boost::signal onServiceAdded; boost::signal onServiceChanged; boost::signal onServiceRemoved; private: void handleServiceAdded(const LinkLocalServiceID&); void handleServiceRemoved(const LinkLocalServiceID&); void handleServiceResolved(const LinkLocalServiceID& service, const DNSSDService::ResolveResult& result); private: boost::shared_ptr dnsSDService; typedef std::map ServiceMap; ServiceMap services; }; }