| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // ClientSocketPoolManager manages access to all ClientSocketPools. It's a | 5 // ClientSocketPoolManager manages access to all ClientSocketPools. It's a |
| 6 // simple container for all of them. Most importantly, it handles the lifetime | 6 // simple container for all of them. Most importantly, it handles the lifetime |
| 7 // and destruction order properly. | 7 // and destruction order properly. |
| 8 | 8 |
| 9 #ifndef NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_ | 9 #ifndef NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_ |
| 10 #define NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_ | 10 #define NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_ |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 class ClientSocketPoolHistograms; | 27 class ClientSocketPoolHistograms; |
| 28 class DnsRRResolver; | 28 class DnsRRResolver; |
| 29 class HostPortPair; | 29 class HostPortPair; |
| 30 class HttpProxyClientSocketPool; | 30 class HttpProxyClientSocketPool; |
| 31 class HostResolver; | 31 class HostResolver; |
| 32 class NetLog; | 32 class NetLog; |
| 33 class ProxyService; | 33 class ProxyService; |
| 34 class SOCKSClientSocketPool; | 34 class SOCKSClientSocketPool; |
| 35 class SSLClientSocketPool; | 35 class SSLClientSocketPool; |
| 36 class SSLConfigService; | 36 class SSLConfigService; |
| 37 class SSLHostInfoFactory; | |
| 38 class TCPClientSocketPool; | 37 class TCPClientSocketPool; |
| 39 | 38 |
| 40 namespace internal { | 39 namespace internal { |
| 41 | 40 |
| 42 // A helper class for auto-deleting Values in the destructor. | 41 // A helper class for auto-deleting Values in the destructor. |
| 43 template <typename Key, typename Value> | 42 template <typename Key, typename Value> |
| 44 class OwnedPoolMap : public std::map<Key, Value> { | 43 class OwnedPoolMap : public std::map<Key, Value> { |
| 45 public: | 44 public: |
| 46 OwnedPoolMap() { | 45 OwnedPoolMap() { |
| 47 COMPILE_ASSERT(base::is_pointer<Value>::value, | 46 COMPILE_ASSERT(base::is_pointer<Value>::value, |
| 48 value_must_be_a_pointer); | 47 value_must_be_a_pointer); |
| 49 } | 48 } |
| 50 | 49 |
| 51 ~OwnedPoolMap() { | 50 ~OwnedPoolMap() { |
| 52 STLDeleteValues(this); | 51 STLDeleteValues(this); |
| 53 } | 52 } |
| 54 }; | 53 }; |
| 55 | 54 |
| 56 } // internal | 55 } // internal |
| 57 | 56 |
| 58 class ClientSocketPoolManager : public NonThreadSafe { | 57 class ClientSocketPoolManager : public NonThreadSafe { |
| 59 public: | 58 public: |
| 60 ClientSocketPoolManager(NetLog* net_log, | 59 ClientSocketPoolManager(NetLog* net_log, |
| 61 ClientSocketFactory* socket_factory, | 60 ClientSocketFactory* socket_factory, |
| 62 HostResolver* host_resolver, | 61 HostResolver* host_resolver, |
| 63 DnsRRResolver* dnsrr_resolver, | 62 DnsRRResolver* dnsrr_resolver, |
| 64 SSLHostInfoFactory* ssl_host_info_factory, | |
| 65 ProxyService* proxy_service, | 63 ProxyService* proxy_service, |
| 66 SSLConfigService* ssl_config_service); | 64 SSLConfigService* ssl_config_service); |
| 67 ~ClientSocketPoolManager(); | 65 ~ClientSocketPoolManager(); |
| 68 | 66 |
| 69 void FlushSocketPools(); | 67 void FlushSocketPools(); |
| 70 | 68 |
| 71 TCPClientSocketPool* tcp_socket_pool() { return tcp_socket_pool_.get(); } | 69 TCPClientSocketPool* tcp_socket_pool() { return tcp_socket_pool_.get(); } |
| 72 | 70 |
| 73 SSLClientSocketPool* ssl_socket_pool() { return ssl_socket_pool_.get(); } | 71 SSLClientSocketPool* ssl_socket_pool() { return ssl_socket_pool_.get(); } |
| 74 | 72 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 97 typedef internal::OwnedPoolMap<HostPortPair, SOCKSClientSocketPool*> | 95 typedef internal::OwnedPoolMap<HostPortPair, SOCKSClientSocketPool*> |
| 98 SOCKSSocketPoolMap; | 96 SOCKSSocketPoolMap; |
| 99 typedef internal::OwnedPoolMap<HostPortPair, HttpProxyClientSocketPool*> | 97 typedef internal::OwnedPoolMap<HostPortPair, HttpProxyClientSocketPool*> |
| 100 HTTPProxySocketPoolMap; | 98 HTTPProxySocketPoolMap; |
| 101 typedef internal::OwnedPoolMap<HostPortPair, SSLClientSocketPool*> | 99 typedef internal::OwnedPoolMap<HostPortPair, SSLClientSocketPool*> |
| 102 SSLSocketPoolMap; | 100 SSLSocketPoolMap; |
| 103 | 101 |
| 104 NetLog* const net_log_; | 102 NetLog* const net_log_; |
| 105 ClientSocketFactory* const socket_factory_; | 103 ClientSocketFactory* const socket_factory_; |
| 106 HostResolver* const host_resolver_; | 104 HostResolver* const host_resolver_; |
| 107 DnsRRResolver* const dnsrr_resolver_; | 105 DnsRRResolver* dnsrr_resolver_; |
| 108 SSLHostInfoFactory* const ssl_host_info_factory_; | |
| 109 const scoped_refptr<ProxyService> proxy_service_; | 106 const scoped_refptr<ProxyService> proxy_service_; |
| 110 const scoped_refptr<SSLConfigService> ssl_config_service_; | 107 const scoped_refptr<SSLConfigService> ssl_config_service_; |
| 111 | 108 |
| 112 // Note: this ordering is important. | 109 // Note: this ordering is important. |
| 113 | 110 |
| 114 ClientSocketPoolHistograms tcp_pool_histograms_; | 111 ClientSocketPoolHistograms tcp_pool_histograms_; |
| 115 scoped_ptr<TCPClientSocketPool> tcp_socket_pool_; | 112 scoped_ptr<TCPClientSocketPool> tcp_socket_pool_; |
| 116 | 113 |
| 117 ClientSocketPoolHistograms ssl_pool_histograms_; | 114 ClientSocketPoolHistograms ssl_pool_histograms_; |
| 118 scoped_ptr<SSLClientSocketPool> ssl_socket_pool_; | 115 scoped_ptr<SSLClientSocketPool> ssl_socket_pool_; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 137 | 134 |
| 138 ClientSocketPoolHistograms ssl_socket_pool_for_proxies_histograms_; | 135 ClientSocketPoolHistograms ssl_socket_pool_for_proxies_histograms_; |
| 139 SSLSocketPoolMap ssl_socket_pools_for_proxies_; | 136 SSLSocketPoolMap ssl_socket_pools_for_proxies_; |
| 140 | 137 |
| 141 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolManager); | 138 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolManager); |
| 142 }; | 139 }; |
| 143 | 140 |
| 144 } // namespace net | 141 } // namespace net |
| 145 | 142 |
| 146 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_ | 143 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_ |
| OLD | NEW |