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 |