From 76978866497a7dd9be96edef5fa06f470a6b324f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 16 Oct 2011 10:16:56 +0200
Subject: Hoist ProxyProvider creation out of Client.


diff --git a/Swiften/Client/CoreClient.cpp b/Swiften/Client/CoreClient.cpp
index 2a66905..a8a5c8f 100644
--- a/Swiften/Client/CoreClient.cpp
+++ b/Swiften/Client/CoreClient.cpp
@@ -17,11 +17,11 @@
 #include <Swiften/TLS/CertificateVerificationError.h>
 #include <Swiften/Network/ChainedConnector.h>
 #include <Swiften/Network/NetworkFactories.h>
+#include <Swiften/Network/ProxyProvider.h>
 #include <Swiften/TLS/PKCS12Certificate.h>
 #include <Swiften/Session/BasicSessionStream.h>
 #include <Swiften/Queries/IQRouter.h>
 #include <Swiften/Client/ClientSessionStanzaChannel.h>
-#include <Swiften/Network/PlatformProxyProvider.h>
 #include <Swiften/Network/SOCKS5ProxiedConnectionFactory.h>
 #include <Swiften/Network/HTTPConnectProxiedConnectionFactory.h>
 
@@ -62,12 +62,11 @@ void CoreClient::connect(const std::string& host) {
 	disconnectRequested_ = false;
 	assert(!connector_);
 	assert(proxyConnectionFactories.empty());
-	PlatformProxyProvider proxyProvider;
-	if(proxyProvider.getSOCKS5Proxy().isValid()) {
-		proxyConnectionFactories.push_back(new SOCKS5ProxiedConnectionFactory(networkFactories->getConnectionFactory(), proxyProvider.getSOCKS5Proxy()));
+	if(networkFactories->getProxyProvider()->getSOCKS5Proxy().isValid()) {
+		proxyConnectionFactories.push_back(new SOCKS5ProxiedConnectionFactory(networkFactories->getConnectionFactory(), networkFactories->getProxyProvider()->getSOCKS5Proxy()));
 	}
-	if(proxyProvider.getHTTPConnectProxy().isValid()) {
-		proxyConnectionFactories.push_back(new HTTPConnectProxiedConnectionFactory(networkFactories->getConnectionFactory(), proxyProvider.getHTTPConnectProxy()));
+	if(networkFactories->getProxyProvider()->getHTTPConnectProxy().isValid()) {
+		proxyConnectionFactories.push_back(new HTTPConnectProxiedConnectionFactory(networkFactories->getConnectionFactory(), networkFactories->getProxyProvider()->getHTTPConnectProxy()));
 	}
 	std::vector<ConnectionFactory*> connectionFactories(proxyConnectionFactories);
 	connectionFactories.push_back(networkFactories->getConnectionFactory());
diff --git a/Swiften/Network/BoostNetworkFactories.cpp b/Swiften/Network/BoostNetworkFactories.cpp
index 030fd49..2b4c04b 100644
--- a/Swiften/Network/BoostNetworkFactories.cpp
+++ b/Swiften/Network/BoostNetworkFactories.cpp
@@ -13,6 +13,7 @@
 #include <Swiften/Parser/PlatformXMLParserFactory.h>
 #include <Swiften/Network/NullNATTraverser.h>
 #include <Swiften/TLS/PlatformTLSFactories.h>
+#include <Swiften/Network/PlatformProxyProvider.h>
 
 namespace Swift {
 
@@ -28,13 +29,11 @@ BoostNetworkFactories::BoostNetworkFactories(EventLoop* eventLoop) {
 #endif
 	xmlParserFactory = new PlatformXMLParserFactory();
 	tlsFactories = new PlatformTLSFactories();
-}
-
-TLSContextFactory* BoostNetworkFactories::getTLSContextFactory() const {
-	return tlsFactories->getTLSContextFactory();
+	proxyProvider = new PlatformProxyProvider();
 }
 
 BoostNetworkFactories::~BoostNetworkFactories() {
+	delete proxyProvider;
 	delete tlsFactories;
 	delete xmlParserFactory;
 	delete natTraverser;
@@ -44,4 +43,8 @@ BoostNetworkFactories::~BoostNetworkFactories() {
 	delete timerFactory;
 }
 
+TLSContextFactory* BoostNetworkFactories::getTLSContextFactory() const {
+	return tlsFactories->getTLSContextFactory();
+}
+
 }
diff --git a/Swiften/Network/BoostNetworkFactories.h b/Swiften/Network/BoostNetworkFactories.h
index 8f2b17a..3d268d1 100644
--- a/Swiften/Network/BoostNetworkFactories.h
+++ b/Swiften/Network/BoostNetworkFactories.h
@@ -49,6 +49,10 @@ namespace Swift {
 
 			virtual TLSContextFactory* getTLSContextFactory() const;
 
+			virtual ProxyProvider* getProxyProvider() const {
+				return proxyProvider;
+			}
+
 		private:
 			BoostIOServiceThread ioServiceThread;
 			TimerFactory* timerFactory;
@@ -58,5 +62,6 @@ namespace Swift {
 			NATTraverser* natTraverser;
 			XMLParserFactory* xmlParserFactory;
 			PlatformTLSFactories* tlsFactories;
+			ProxyProvider* proxyProvider;
 	};
 }
diff --git a/Swiften/Network/NetworkFactories.h b/Swiften/Network/NetworkFactories.h
index 2404460..6eba2f3 100644
--- a/Swiften/Network/NetworkFactories.h
+++ b/Swiften/Network/NetworkFactories.h
@@ -15,6 +15,7 @@ namespace Swift {
 	class XMLParserFactory;
 	class TLSContextFactory;
 	class CertificateFactory;
+	class ProxyProvider;
 
 	/**
 	 * An interface collecting network factories.
@@ -30,5 +31,6 @@ namespace Swift {
 			virtual NATTraverser* getNATTraverser() const = 0;
 			virtual XMLParserFactory* getXMLParserFactory() const = 0;
 			virtual TLSContextFactory* getTLSContextFactory() const = 0;
+			virtual ProxyProvider* getProxyProvider() const = 0;
 	};
 }
-- 
cgit v0.10.2-6-g49f6