diff options
| author | Remko Tronçon <git@el-tramo.be> | 2009-12-02 20:42:30 (GMT) |
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2009-12-03 08:09:01 (GMT) |
| commit | 5608da36a3a319070494d5a70ff984e7c172186e (patch) | |
| tree | 2c44df5a9f0ea0ab180763222e54aece5dc65c93 /Swiften/Client/Client.cpp | |
| parent | 6e50bd41dc3f11815a40dfef500dc0d61ea5d737 (diff) | |
| download | swift-5608da36a3a319070494d5a70ff984e7c172186e.zip swift-5608da36a3a319070494d5a70ff984e7c172186e.tar.bz2 | |
DNS querying is now asynchronous.
This means we can now move them to a separate thread.
Diffstat (limited to 'Swiften/Client/Client.cpp')
| -rw-r--r-- | Swiften/Client/Client.cpp | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/Swiften/Client/Client.cpp b/Swiften/Client/Client.cpp index 19f7ee5..e9de19a 100644 --- a/Swiften/Client/Client.cpp +++ b/Swiften/Client/Client.cpp @@ -1,60 +1,59 @@ #include "Swiften/Client/Client.h" #include <boost/bind.hpp> #include "Swiften/Network/MainBoostIOServiceThread.h" #include "Swiften/Network/BoostIOServiceThread.h" #include "Swiften/Client/ClientSession.h" #include "Swiften/StreamStack/PlatformTLSLayerFactory.h" #include "Swiften/Network/Connector.h" #include "Swiften/Network/BoostConnectionFactory.h" #include "Swiften/Network/BoostTimerFactory.h" -#include "Swiften/Network/DomainNameResolveException.h" #include "Swiften/TLS/PKCS12Certificate.h" #include "Swiften/Session/BasicSessionStream.h" namespace Swift { Client::Client(const JID& jid, const String& password) : IQRouter(this), jid_(jid), password_(password) { connectionFactory_ = new BoostConnectionFactory(&MainBoostIOServiceThread::getInstance().getIOService()); timerFactory_ = new BoostTimerFactory(&MainBoostIOServiceThread::getInstance().getIOService()); tlsLayerFactory_ = new PlatformTLSLayerFactory(); } Client::~Client() { if (session_ || connection_) { std::cerr << "Warning: Client not disconnected properly" << std::endl; } delete tlsLayerFactory_; delete timerFactory_; delete connectionFactory_; } bool Client::isAvailable() { return session_; } void Client::connect() { assert(!connector_); connector_ = boost::shared_ptr<Connector>(new Connector(jid_.getDomain(), &resolver_, connectionFactory_)); connector_->onConnectFinished.connect(boost::bind(&Client::handleConnectorFinished, this, _1)); connector_->start(); } void Client::handleConnectorFinished(boost::shared_ptr<Connection> connection) { // TODO: Add domain name resolver error connector_.reset(); if (!connection) { onError(ClientError::ConnectionError); } else { assert(!connection_); connection_ = connection; assert(!sessionStream_); sessionStream_ = boost::shared_ptr<BasicSessionStream>(new BasicSessionStream(connection_, &payloadParserFactories_, &payloadSerializers_, tlsLayerFactory_, timerFactory_)); if (!certificate_.isEmpty()) { sessionStream_->setTLSCertificate(PKCS12Certificate(certificate_, password_)); } sessionStream_->onDataRead.connect(boost::bind(&Client::handleDataRead, this, _1)); |
Swift