Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Side by Side Diff: net/socket/client_socket_pool_manager_impl.h

Issue 8572041: Make ClientSocketPoolManager into an interface. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_IMPL_H_
6 #define NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_IMPL_H_
7 #pragma once
8
9 #include <map>
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/stl_util.h"
15 #include "base/template_util.h"
16 #include "base/threading/non_thread_safe.h"
17 #include "net/base/cert_database.h"
18 #include "net/socket/client_socket_pool_histograms.h"
19 #include "net/socket/client_socket_pool_manager.h"
20
21 namespace net {
22
23 class CertVerifier;
24 class ClientSocketFactory;
25 class ClientSocketPoolHistograms;
26 class DnsCertProvenanceChecker;
27 class DnsRRResolver;
28 class HttpProxyClientSocketPool;
29 class HostResolver;
30 class NetLog;
31 class OriginBoundCertService;
32 class ProxyService;
33 class SOCKSClientSocketPool;
34 class SSLClientSocketPool;
35 class SSLConfigService;
36 class SSLHostInfoFactory;
37 class TransportClientSocketPool;
38
39 namespace internal {
40
41 // A helper class for auto-deleting Values in the destructor.
42 template <typename Key, typename Value>
43 class OwnedPoolMap : public std::map<Key, Value> {
44 public:
45 OwnedPoolMap() {
46 COMPILE_ASSERT(base::is_pointer<Value>::value,
47 value_must_be_a_pointer);
48 }
49
50 ~OwnedPoolMap() {
51 STLDeleteValues(this);
52 }
53 };
54
55 } // namespace internal
56
57 class ClientSocketPoolManagerImpl : public base::NonThreadSafe,
58 public ClientSocketPoolManager,
59 public CertDatabase::Observer {
60 public:
61 ClientSocketPoolManagerImpl(NetLog* net_log,
62 ClientSocketFactory* socket_factory,
63 HostResolver* host_resolver,
64 CertVerifier* cert_verifier,
65 OriginBoundCertService* origin_bound_cert_service,
66 DnsRRResolver* dnsrr_resolver,
67 DnsCertProvenanceChecker* dns_cert_checker,
68 SSLHostInfoFactory* ssl_host_info_factory,
69 ProxyService* proxy_service,
70 SSLConfigService* ssl_config_service);
71 virtual ~ClientSocketPoolManagerImpl();
72
73 virtual void FlushSocketPools() OVERRIDE;
74 virtual void CloseIdleSockets() OVERRIDE;
75
76 virtual TransportClientSocketPool* GetTransportSocketPool() OVERRIDE;
77
78 virtual SSLClientSocketPool* GetSSLSocketPool() OVERRIDE;
79
80 virtual SOCKSClientSocketPool* GetSocketPoolForSOCKSProxy(
81 const HostPortPair& socks_proxy) OVERRIDE;
82
83 virtual HttpProxyClientSocketPool* GetSocketPoolForHTTPProxy(
84 const HostPortPair& http_proxy) OVERRIDE;
85
86 virtual SSLClientSocketPool* GetSocketPoolForSSLWithProxy(
87 const HostPortPair& proxy_server) OVERRIDE;
88
89 // Creates a Value summary of the state of the socket pools. The caller is
90 // responsible for deleting the returned value.
91 virtual base::Value* SocketPoolInfoToValue() const OVERRIDE;
92
93 // CertDatabase::Observer methods:
94 virtual void OnUserCertAdded(const X509Certificate* cert) OVERRIDE;
95 virtual void OnCertTrustChanged(const X509Certificate* cert) OVERRIDE;
96
97 private:
98 typedef internal::OwnedPoolMap<HostPortPair, TransportClientSocketPool*>
99 TransportSocketPoolMap;
100 typedef internal::OwnedPoolMap<HostPortPair, SOCKSClientSocketPool*>
101 SOCKSSocketPoolMap;
102 typedef internal::OwnedPoolMap<HostPortPair, HttpProxyClientSocketPool*>
103 HTTPProxySocketPoolMap;
104 typedef internal::OwnedPoolMap<HostPortPair, SSLClientSocketPool*>
105 SSLSocketPoolMap;
106
107 NetLog* const net_log_;
108 ClientSocketFactory* const socket_factory_;
109 HostResolver* const host_resolver_;
110 CertVerifier* const cert_verifier_;
111 OriginBoundCertService* const origin_bound_cert_service_;
112 DnsRRResolver* const dnsrr_resolver_;
113 DnsCertProvenanceChecker* const dns_cert_checker_;
114 SSLHostInfoFactory* const ssl_host_info_factory_;
115 ProxyService* const proxy_service_;
116 const scoped_refptr<SSLConfigService> ssl_config_service_;
117
118 // Note: this ordering is important.
119
120 ClientSocketPoolHistograms transport_pool_histograms_;
121 scoped_ptr<TransportClientSocketPool> transport_socket_pool_;
122
123 ClientSocketPoolHistograms ssl_pool_histograms_;
124 scoped_ptr<SSLClientSocketPool> ssl_socket_pool_;
125
126 ClientSocketPoolHistograms transport_for_socks_pool_histograms_;
127 TransportSocketPoolMap transport_socket_pools_for_socks_proxies_;
128
129 ClientSocketPoolHistograms socks_pool_histograms_;
130 SOCKSSocketPoolMap socks_socket_pools_;
131
132 ClientSocketPoolHistograms transport_for_http_proxy_pool_histograms_;
133 TransportSocketPoolMap transport_socket_pools_for_http_proxies_;
134
135 ClientSocketPoolHistograms transport_for_https_proxy_pool_histograms_;
136 TransportSocketPoolMap transport_socket_pools_for_https_proxies_;
137
138 ClientSocketPoolHistograms ssl_for_https_proxy_pool_histograms_;
139 SSLSocketPoolMap ssl_socket_pools_for_https_proxies_;
140
141 ClientSocketPoolHistograms http_proxy_pool_histograms_;
142 HTTPProxySocketPoolMap http_proxy_socket_pools_;
143
144 ClientSocketPoolHistograms ssl_socket_pool_for_proxies_histograms_;
145 SSLSocketPoolMap ssl_socket_pools_for_proxies_;
146
147 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolManagerImpl);
148 };
149
150 } // namespace net
151
152 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698