/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include "Swiften/Base/boost_signalslib.h" #include #include #include "Swiften/Network/Connection.h" #include "Swiften/LinkLocal/LinkLocalService.h" namespace Swift { class ConnectionFactory; class HostAddress; class Element; class PayloadParserFactoryCollection; class PayloadSerializerCollection; class DNSSDQuerier; class DNSSDResolveHostnameQuery; class LinkLocalConnector : public boost::enable_shared_from_this { public: LinkLocalConnector( const LinkLocalService& service, boost::shared_ptr querier, boost::shared_ptr connection); ~LinkLocalConnector(); const LinkLocalService& getService() const { return service; } void connect(); void cancel(); void queueElement(boost::shared_ptr element); const std::vector >& getQueuedElements() const { return queuedElements; } boost::shared_ptr getConnection() const { return connection; } boost::signal onConnectFinished; private: void handleHostnameResolved(const boost::optional& address); void handleConnected(bool error); private: LinkLocalService service; boost::shared_ptr querier; boost::shared_ptr resolveQuery; boost::bsignals::connection resolveQueryHostNameResolvedConnection; boost::shared_ptr connection; boost::bsignals::connection connectionConnectFinishedConnection; std::vector > queuedElements; }; }