Index: net/socket/client_socket_pool_manager.h |
diff --git a/net/socket/client_socket_pool_manager.h b/net/socket/client_socket_pool_manager.h |
index 1b817816e360c5f53d030495fe746c9e07fc4802..2c5176141661aa0a654b833886daedefa697d1bd 100644 |
--- a/net/socket/client_socket_pool_manager.h |
+++ b/net/socket/client_socket_pool_manager.h |
@@ -10,18 +10,9 @@ |
#define NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ |
#pragma once |
-#include <map> |
-#include "base/basictypes.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/stl_util.h" |
-#include "base/template_util.h" |
-#include "base/threading/non_thread_safe.h" |
-#include "net/base/cert_database.h" |
#include "net/base/completion_callback.h" |
#include "net/base/net_export.h" |
#include "net/base/request_priority.h" |
-#include "net/socket/client_socket_pool_histograms.h" |
class GURL; |
@@ -32,26 +23,15 @@ class Value; |
namespace net { |
class BoundNetLog; |
-class CertVerifier; |
-class ClientSocketFactory; |
class ClientSocketHandle; |
-class ClientSocketPoolHistograms; |
-class DnsCertProvenanceChecker; |
-class DnsRRResolver; |
-class HttpNetworkSession; |
-class HttpRequestHeaders; |
class HostPortPair; |
+class HttpNetworkSession; |
class HttpProxyClientSocketPool; |
-class HostResolver; |
-class NetLog; |
-class OriginBoundCertService; |
+class HttpRequestHeaders; |
class ProxyInfo; |
-class ProxyService; |
+class TransportClientSocketPool; |
class SOCKSClientSocketPool; |
class SSLClientSocketPool; |
-class SSLConfigService; |
-class SSLHostInfoFactory; |
-class TransportClientSocketPool; |
struct SSLConfig; |
@@ -59,177 +39,87 @@ struct SSLConfig; |
// really offer much flexiblity in exporting contants. |
enum DefaultMaxValues { kDefaultMaxSocketsPerProxyServer = 32 }; |
-namespace internal { |
- |
-// A helper class for auto-deleting Values in the destructor. |
-template <typename Key, typename Value> |
-class OwnedPoolMap : public std::map<Key, Value> { |
+class NET_EXPORT_PRIVATE ClientSocketPoolManager { |
public: |
- OwnedPoolMap() { |
- COMPILE_ASSERT(base::is_pointer<Value>::value, |
- value_must_be_a_pointer); |
- } |
- |
- ~OwnedPoolMap() { |
- STLDeleteValues(this); |
- } |
-}; |
- |
-} // namespace internal |
- |
-class ClientSocketPoolManager : public base::NonThreadSafe, |
- public CertDatabase::Observer { |
- public: |
- ClientSocketPoolManager(NetLog* net_log, |
- ClientSocketFactory* socket_factory, |
- HostResolver* host_resolver, |
- CertVerifier* cert_verifier, |
- OriginBoundCertService* origin_bound_cert_service, |
- DnsRRResolver* dnsrr_resolver, |
- DnsCertProvenanceChecker* dns_cert_checker, |
- SSLHostInfoFactory* ssl_host_info_factory, |
- ProxyService* proxy_service, |
- SSLConfigService* ssl_config_service); |
+ ClientSocketPoolManager(); |
virtual ~ClientSocketPoolManager(); |
- void FlushSocketPools(); |
- void CloseIdleSockets(); |
- |
- TransportClientSocketPool* transport_socket_pool() { |
- return transport_socket_pool_.get(); |
- } |
- |
- SSLClientSocketPool* ssl_socket_pool() { return ssl_socket_pool_.get(); } |
- |
- SOCKSClientSocketPool* GetSocketPoolForSOCKSProxy( |
- const HostPortPair& socks_proxy); |
- |
- HttpProxyClientSocketPool* GetSocketPoolForHTTPProxy( |
- const HostPortPair& http_proxy); |
- |
- SSLClientSocketPool* GetSocketPoolForSSLWithProxy( |
- const HostPortPair& proxy_server); |
- |
// The setter methods below affect only newly created socket pools after the |
// methods are called. Normally they should be called at program startup |
- // before any ClientSocketPoolManager is created. |
- NET_EXPORT static void set_max_sockets_per_pool(int socket_count); |
- NET_EXPORT static int max_sockets_per_group(); |
- NET_EXPORT static void set_max_sockets_per_group(int socket_count); |
- NET_EXPORT static void set_max_sockets_per_proxy_server(int socket_count); |
- |
- // A helper method that uses the passed in proxy information to initialize a |
- // ClientSocketHandle with the relevant socket pool. Use this method for |
- // HTTP/HTTPS requests. |ssl_config_for_origin| is only used if the request |
- // uses SSL and |ssl_config_for_proxy| is used if the proxy server is HTTPS. |
- static int InitSocketHandleForHttpRequest( |
- const GURL& request_url, |
- const HttpRequestHeaders& request_extra_headers, |
- int request_load_flags, |
- RequestPriority request_priority, |
- HttpNetworkSession* session, |
- const ProxyInfo& proxy_info, |
- bool force_spdy_over_ssl, |
- bool want_spdy_over_npn, |
- const SSLConfig& ssl_config_for_origin, |
- const SSLConfig& ssl_config_for_proxy, |
- const BoundNetLog& net_log, |
- ClientSocketHandle* socket_handle, |
- OldCompletionCallback* callback); |
- |
- // A helper method that uses the passed in proxy information to initialize a |
- // ClientSocketHandle with the relevant socket pool. Use this method for |
- // a raw socket connection to a host-port pair (that needs to tunnel through |
- // the proxies). |
- NET_EXPORT static int InitSocketHandleForRawConnect( |
- const HostPortPair& host_port_pair, |
- HttpNetworkSession* session, |
- const ProxyInfo& proxy_info, |
- const SSLConfig& ssl_config_for_origin, |
- const SSLConfig& ssl_config_for_proxy, |
- const BoundNetLog& net_log, |
- ClientSocketHandle* socket_handle, |
- OldCompletionCallback* callback); |
- |
- // Similar to InitSocketHandleForHttpRequest except that it initiates the |
- // desired number of preconnect streams from the relevant socket pool. |
- static int PreconnectSocketsForHttpRequest( |
- const GURL& request_url, |
- const HttpRequestHeaders& request_extra_headers, |
- int request_load_flags, |
- RequestPriority request_priority, |
- HttpNetworkSession* session, |
- const ProxyInfo& proxy_info, |
- bool force_spdy_over_ssl, |
- bool want_spdy_over_npn, |
- const SSLConfig& ssl_config_for_origin, |
- const SSLConfig& ssl_config_for_proxy, |
- const BoundNetLog& net_log, |
- int num_preconnect_streams); |
- |
+ // before any ClientSocketPoolManagerImpl is created. |
+ static int max_sockets_per_pool(); |
+ static void set_max_sockets_per_pool(int socket_count); |
+ |
+ static int max_sockets_per_group(); |
+ static void set_max_sockets_per_group(int socket_count); |
+ |
+ static int max_sockets_per_proxy_server(); |
+ static void set_max_sockets_per_proxy_server(int socket_count); |
+ |
+ virtual void FlushSocketPools() = 0; |
+ virtual void CloseIdleSockets() = 0; |
+ virtual TransportClientSocketPool* GetTransportSocketPool() = 0; |
+ virtual SSLClientSocketPool* GetSSLSocketPool() = 0; |
+ virtual SOCKSClientSocketPool* GetSocketPoolForSOCKSProxy( |
+ const HostPortPair& socks_proxy) = 0; |
+ virtual HttpProxyClientSocketPool* GetSocketPoolForHTTPProxy( |
+ const HostPortPair& http_proxy) = 0; |
+ virtual SSLClientSocketPool* GetSocketPoolForSSLWithProxy( |
+ const HostPortPair& proxy_server) = 0; |
// Creates a Value summary of the state of the socket pools. The caller is |
// responsible for deleting the returned value. |
- base::Value* SocketPoolInfoToValue() const; |
- |
- // CertDatabase::Observer methods: |
- virtual void OnUserCertAdded(const X509Certificate* cert) OVERRIDE; |
- virtual void OnCertTrustChanged(const X509Certificate* cert) OVERRIDE; |
- |
- private: |
- friend class HttpNetworkSessionPeer; |
- |
- typedef internal::OwnedPoolMap<HostPortPair, TransportClientSocketPool*> |
- TransportSocketPoolMap; |
- typedef internal::OwnedPoolMap<HostPortPair, SOCKSClientSocketPool*> |
- SOCKSSocketPoolMap; |
- typedef internal::OwnedPoolMap<HostPortPair, HttpProxyClientSocketPool*> |
- HTTPProxySocketPoolMap; |
- typedef internal::OwnedPoolMap<HostPortPair, SSLClientSocketPool*> |
- SSLSocketPoolMap; |
- |
- NetLog* const net_log_; |
- ClientSocketFactory* const socket_factory_; |
- HostResolver* const host_resolver_; |
- CertVerifier* const cert_verifier_; |
- OriginBoundCertService* const origin_bound_cert_service_; |
- DnsRRResolver* const dnsrr_resolver_; |
- DnsCertProvenanceChecker* const dns_cert_checker_; |
- SSLHostInfoFactory* const ssl_host_info_factory_; |
- ProxyService* const proxy_service_; |
- const scoped_refptr<SSLConfigService> ssl_config_service_; |
- |
- // Note: this ordering is important. |
- |
- ClientSocketPoolHistograms transport_pool_histograms_; |
- scoped_ptr<TransportClientSocketPool> transport_socket_pool_; |
- |
- ClientSocketPoolHistograms ssl_pool_histograms_; |
- scoped_ptr<SSLClientSocketPool> ssl_socket_pool_; |
- |
- ClientSocketPoolHistograms transport_for_socks_pool_histograms_; |
- TransportSocketPoolMap transport_socket_pools_for_socks_proxies_; |
- |
- ClientSocketPoolHistograms socks_pool_histograms_; |
- SOCKSSocketPoolMap socks_socket_pools_; |
- |
- ClientSocketPoolHistograms transport_for_http_proxy_pool_histograms_; |
- TransportSocketPoolMap transport_socket_pools_for_http_proxies_; |
- |
- ClientSocketPoolHistograms transport_for_https_proxy_pool_histograms_; |
- TransportSocketPoolMap transport_socket_pools_for_https_proxies_; |
- |
- ClientSocketPoolHistograms ssl_for_https_proxy_pool_histograms_; |
- SSLSocketPoolMap ssl_socket_pools_for_https_proxies_; |
- |
- ClientSocketPoolHistograms http_proxy_pool_histograms_; |
- HTTPProxySocketPoolMap http_proxy_socket_pools_; |
- |
- ClientSocketPoolHistograms ssl_socket_pool_for_proxies_histograms_; |
- SSLSocketPoolMap ssl_socket_pools_for_proxies_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolManager); |
+ virtual base::Value* SocketPoolInfoToValue() const = 0; |
}; |
+// A helper method that uses the passed in proxy information to initialize a |
+// ClientSocketHandle with the relevant socket pool. Use this method for |
+// HTTP/HTTPS requests. |ssl_config_for_origin| is only used if the request |
+// uses SSL and |ssl_config_for_proxy| is used if the proxy server is HTTPS. |
+int InitSocketHandleForHttpRequest( |
+ const GURL& request_url, |
+ const HttpRequestHeaders& request_extra_headers, |
+ int request_load_flags, |
+ RequestPriority request_priority, |
+ HttpNetworkSession* session, |
+ const ProxyInfo& proxy_info, |
+ bool force_spdy_over_ssl, |
+ bool want_spdy_over_npn, |
+ const SSLConfig& ssl_config_for_origin, |
+ const SSLConfig& ssl_config_for_proxy, |
+ const BoundNetLog& net_log, |
+ ClientSocketHandle* socket_handle, |
+ OldCompletionCallback* callback); |
+ |
+// A helper method that uses the passed in proxy information to initialize a |
+// ClientSocketHandle with the relevant socket pool. Use this method for |
+// a raw socket connection to a host-port pair (that needs to tunnel through |
+// the proxies). |
+NET_EXPORT int InitSocketHandleForRawConnect( |
+ const HostPortPair& host_port_pair, |
+ HttpNetworkSession* session, |
+ const ProxyInfo& proxy_info, |
+ const SSLConfig& ssl_config_for_origin, |
+ const SSLConfig& ssl_config_for_proxy, |
+ const BoundNetLog& net_log, |
+ ClientSocketHandle* socket_handle, |
+ OldCompletionCallback* callback); |
+ |
+// Similar to InitSocketHandleForHttpRequest except that it initiates the |
+// desired number of preconnect streams from the relevant socket pool. |
+int PreconnectSocketsForHttpRequest( |
+ const GURL& request_url, |
+ const HttpRequestHeaders& request_extra_headers, |
+ int request_load_flags, |
+ RequestPriority request_priority, |
+ HttpNetworkSession* session, |
+ const ProxyInfo& proxy_info, |
+ bool force_spdy_over_ssl, |
+ bool want_spdy_over_npn, |
+ const SSLConfig& ssl_config_for_origin, |
+ const SSLConfig& ssl_config_for_proxy, |
+ const BoundNetLog& net_log, |
+ int num_preconnect_streams); |
+ |
} // namespace net |
#endif // NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ |