From 9e6b127cf35319b0e89d4d6f4dff55a80ce03c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sun, 16 Oct 2011 10:09:03 +0200 Subject: Hoist TLSContextFactory creation out of Client. diff --git a/Swiften/Client/CoreClient.cpp b/Swiften/Client/CoreClient.cpp index 22e3612..2a66905 100644 --- a/Swiften/Client/CoreClient.cpp +++ b/Swiften/Client/CoreClient.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -37,12 +36,10 @@ CoreClient::CoreClient(const JID& jid, const SafeByteArray& password, NetworkFac iqRouter_ = new IQRouter(stanzaChannel_); iqRouter_->setJID(jid); - tlsFactories = new PlatformTLSFactories(); } CoreClient::~CoreClient() { forceReset(); - delete tlsFactories; delete iqRouter_; stanzaChannel_->onAvailableChanged.disconnect(boost::bind(&CoreClient::handleStanzaChannelAvailableChanged, this, _1)); @@ -94,7 +91,7 @@ void CoreClient::handleConnectorFinished(boost::shared_ptr connectio connection_ = connection; assert(!sessionStream_); - sessionStream_ = boost::make_shared(ClientStreamType, connection_, getPayloadParserFactories(), getPayloadSerializers(), tlsFactories->getTLSContextFactory(), networkFactories->getTimerFactory(), networkFactories->getXMLParserFactory()); + sessionStream_ = boost::make_shared(ClientStreamType, connection_, getPayloadParserFactories(), getPayloadSerializers(), networkFactories->getTLSContextFactory(), networkFactories->getTimerFactory(), networkFactories->getXMLParserFactory()); if (!certificate_.empty()) { sessionStream_->setTLSCertificate(PKCS12Certificate(certificate_, password_)); } diff --git a/Swiften/Client/CoreClient.h b/Swiften/Client/CoreClient.h index ad31e72..3c089c1 100644 --- a/Swiften/Client/CoreClient.h +++ b/Swiften/Client/CoreClient.h @@ -30,7 +30,6 @@ namespace Swift { class StanzaChannel; class Stanza; class BasicSessionStream; - class PlatformTLSFactories; class CertificateTrustChecker; class NetworkFactories; class ClientSessionStanzaChannel; @@ -222,7 +221,6 @@ namespace Swift { ClientOptions options; boost::shared_ptr connector_; std::vector proxyConnectionFactories; - PlatformTLSFactories* tlsFactories; boost::shared_ptr connection_; boost::shared_ptr sessionStream_; boost::shared_ptr session_; diff --git a/Swiften/Network/BoostNetworkFactories.cpp b/Swiften/Network/BoostNetworkFactories.cpp index 56be2b7..030fd49 100644 --- a/Swiften/Network/BoostNetworkFactories.cpp +++ b/Swiften/Network/BoostNetworkFactories.cpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace Swift { @@ -26,9 +27,15 @@ BoostNetworkFactories::BoostNetworkFactories(EventLoop* eventLoop) { natTraverser = new NullNATTraverser(eventLoop); #endif xmlParserFactory = new PlatformXMLParserFactory(); + tlsFactories = new PlatformTLSFactories(); +} + +TLSContextFactory* BoostNetworkFactories::getTLSContextFactory() const { + return tlsFactories->getTLSContextFactory(); } BoostNetworkFactories::~BoostNetworkFactories() { + delete tlsFactories; delete xmlParserFactory; delete natTraverser; delete connectionServerFactory; diff --git a/Swiften/Network/BoostNetworkFactories.h b/Swiften/Network/BoostNetworkFactories.h index c9ecb59..8f2b17a 100644 --- a/Swiften/Network/BoostNetworkFactories.h +++ b/Swiften/Network/BoostNetworkFactories.h @@ -12,6 +12,7 @@ namespace Swift { class EventLoop; class NATTraverser; + class PlatformTLSFactories; class BoostNetworkFactories : public NetworkFactories { public: @@ -46,6 +47,8 @@ namespace Swift { return xmlParserFactory; } + virtual TLSContextFactory* getTLSContextFactory() const; + private: BoostIOServiceThread ioServiceThread; TimerFactory* timerFactory; @@ -54,5 +57,6 @@ namespace Swift { ConnectionServerFactory* connectionServerFactory; NATTraverser* natTraverser; XMLParserFactory* xmlParserFactory; + PlatformTLSFactories* tlsFactories; }; } diff --git a/Swiften/Network/NetworkFactories.h b/Swiften/Network/NetworkFactories.h index 42c9f6a..2404460 100644 --- a/Swiften/Network/NetworkFactories.h +++ b/Swiften/Network/NetworkFactories.h @@ -13,6 +13,8 @@ namespace Swift { class ConnectionServerFactory; class NATTraverser; class XMLParserFactory; + class TLSContextFactory; + class CertificateFactory; /** * An interface collecting network factories. @@ -27,5 +29,6 @@ namespace Swift { virtual ConnectionServerFactory* getConnectionServerFactory() const = 0; virtual NATTraverser* getNATTraverser() const = 0; virtual XMLParserFactory* getXMLParserFactory() const = 0; + virtual TLSContextFactory* getTLSContextFactory() const = 0; }; } -- cgit v0.10.2-6-g49f6