#pragma once #include #include #include #include #include #include "Swiften/Base/String.h" #include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" #include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" #include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" namespace Swift { //class HostAddress; class LinkLocalServiceBrowser { public: LinkLocalServiceBrowser(boost::shared_ptr querier); ~LinkLocalServiceBrowser(); /*std::vector getServices() const;*/ boost::signal onServiceAdded; boost::signal onServiceChanged; boost::signal onServiceRemoved; private: void handleServiceAdded(const DNSSDServiceID&); void handleServiceRemoved(const DNSSDServiceID&); void handleServiceResolved(const DNSSDServiceID& service, const boost::optional& result); private: boost::shared_ptr querier; boost::shared_ptr browseQuery; typedef std::map > ResolveQueryMap; ResolveQueryMap resolveQueries; typedef std::map ServiceMap; ServiceMap services; }; }