#pragma once #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include <avahi-client/client.h> #include <avahi-client/lookup.h> #include <avahi-common/thread-watch.h> #include <avahi-common/watch.h> #include <avahi-common/malloc.h> #include <avahi-common/error.h> #include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" namespace Swift { class ByteArray; class AvahiQuerier : public DNSSDQuerier, public boost::enable_shared_from_this<AvahiQuerier> { public: AvahiQuerier(); ~AvahiQuerier(); boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery(); boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery( const String& name, int port, const ByteArray& info); boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery( const DNSSDServiceID&); boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery( const String& hostname, int interfaceIndex); void start(); void stop(); AvahiThreadedPoll* getThreadedPoll() const { return threadedPoll; } AvahiClient* getClient() const { return client; } private: AvahiClient* client; AvahiThreadedPoll* threadedPoll; }; }