#pragma once #include #include #include #include #include "Swiften/JID/JID.h" #include "Swiften/Network/Connection.h" namespace Swift { class ConnectionFactory; class HostAddress; class String; class Element; class PayloadParserFactoryCollection; class PayloadSerializerCollection; class DNSSDService; class LinkLocalConnector : public boost::enable_shared_from_this { public: LinkLocalConnector( const JID& remoteJID, const String& hostname, int port, boost::shared_ptr resolver, boost::shared_ptr connection); const JID& getRemoteJID() const { return remoteJID_; } void connect(); 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 String& hostname, const boost::optional& address); void handleConnected(bool error); private: JID remoteJID_; String hostname_; int port_; boost::shared_ptr resolver_; boost::shared_ptr connection_; bool resolving_; std::vector > queuedElements_; }; }