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 #include "net/http/http_network_session.h" | 5 #include "net/http/http_network_session.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "net/http/http_auth_handler_factory.h" | 8 #include "net/http/http_auth_handler_factory.h" |
9 #include "net/http/url_security_manager.h" | 9 #include "net/http/url_security_manager.h" |
10 #include "net/spdy/spdy_session_pool.h" | 10 #include "net/spdy/spdy_session_pool.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 uint16 HttpNetworkSession::g_fixed_https_port = 0; | 22 uint16 HttpNetworkSession::g_fixed_https_port = 0; |
23 | 23 |
24 // TODO(vandebo) when we've completely converted to pools, the base TCP | 24 // TODO(vandebo) when we've completely converted to pools, the base TCP |
25 // pool name should get changed to TCP instead of Transport. | 25 // pool name should get changed to TCP instead of Transport. |
26 HttpNetworkSession::HttpNetworkSession( | 26 HttpNetworkSession::HttpNetworkSession( |
27 NetworkChangeNotifier* network_change_notifier, | 27 NetworkChangeNotifier* network_change_notifier, |
28 HostResolver* host_resolver, | 28 HostResolver* host_resolver, |
29 ProxyService* proxy_service, | 29 ProxyService* proxy_service, |
30 ClientSocketFactory* client_socket_factory, | 30 ClientSocketFactory* client_socket_factory, |
31 SSLConfigService* ssl_config_service, | 31 SSLConfigService* ssl_config_service, |
| 32 SpdySessionPool* spdy_session_pool, |
32 HttpAuthHandlerFactory* http_auth_handler_factory) | 33 HttpAuthHandlerFactory* http_auth_handler_factory) |
33 : network_change_notifier_(network_change_notifier), | 34 : network_change_notifier_(network_change_notifier), |
| 35 tcp_socket_pool_(new TCPClientSocketPool( |
| 36 max_sockets_, max_sockets_per_group_, "Transport", |
| 37 host_resolver, client_socket_factory, network_change_notifier_)), |
| 38 socks_socket_pool_(new SOCKSClientSocketPool( |
| 39 max_sockets_, max_sockets_per_group_, "SOCKS", host_resolver, |
| 40 new TCPClientSocketPool(max_sockets_, max_sockets_per_group_, |
| 41 "TCPForSOCKS", host_resolver, |
| 42 client_socket_factory, |
| 43 network_change_notifier_), |
| 44 network_change_notifier_)), |
34 socket_factory_(client_socket_factory), | 45 socket_factory_(client_socket_factory), |
35 host_resolver_(host_resolver), | 46 host_resolver_(host_resolver), |
36 tcp_socket_pool_(CreateNewTCPSocketPool()), | |
37 socks_socket_pool_(CreateNewSOCKSSocketPool()), | |
38 proxy_service_(proxy_service), | 47 proxy_service_(proxy_service), |
39 ssl_config_service_(ssl_config_service), | 48 ssl_config_service_(ssl_config_service), |
40 spdy_session_pool_(new SpdySessionPool()), | 49 spdy_session_pool_(spdy_session_pool), |
41 http_auth_handler_factory_(http_auth_handler_factory) { | 50 http_auth_handler_factory_(http_auth_handler_factory) { |
42 DCHECK(proxy_service); | 51 DCHECK(proxy_service); |
43 DCHECK(ssl_config_service); | 52 DCHECK(ssl_config_service); |
44 | |
45 if (network_change_notifier) | |
46 network_change_notifier_->AddObserver(this); | |
47 } | 53 } |
48 | 54 |
49 HttpNetworkSession::~HttpNetworkSession() { | 55 HttpNetworkSession::~HttpNetworkSession() { |
50 if (network_change_notifier_) | |
51 network_change_notifier_->RemoveObserver(this); | |
52 } | 56 } |
53 | 57 |
54 // static | 58 // static |
55 void HttpNetworkSession::set_max_sockets_per_group(int socket_count) { | 59 void HttpNetworkSession::set_max_sockets_per_group(int socket_count) { |
56 DCHECK_LT(0, socket_count); | 60 DCHECK(0 < socket_count); |
57 // The following is a sanity check... but we should NEVER be near this value. | 61 // The following is a sanity check... but we should NEVER be near this value. |
58 DCHECK_GT(100, socket_count); | 62 DCHECK(100 > socket_count); |
59 max_sockets_per_group_ = socket_count; | 63 max_sockets_per_group_ = socket_count; |
60 } | 64 } |
61 | 65 |
62 void HttpNetworkSession::Flush() { | 66 // TODO(vandebo) when we've completely converted to pools, the base TCP |
63 host_resolver()->Flush(); | 67 // pool name should get changed to TCP instead of Transport. |
64 tcp_socket_pool()->CloseIdleSockets(); | 68 void HttpNetworkSession::ReplaceTCPSocketPool() { |
65 tcp_socket_pool_ = CreateNewTCPSocketPool(); | 69 tcp_socket_pool_ = new TCPClientSocketPool(max_sockets_, |
66 socks_socket_pool()->CloseIdleSockets(); | 70 max_sockets_per_group_, |
67 socks_socket_pool_ = CreateNewSOCKSSocketPool(); | 71 "Transport", |
68 spdy_session_pool_->CloseAllSessions(); | 72 host_resolver_, |
69 spdy_session_pool_ = new SpdySessionPool; | 73 socket_factory_, |
70 } | 74 network_change_notifier_); |
71 | |
72 void HttpNetworkSession::OnIPAddressChanged() { | |
73 Flush(); | |
74 } | |
75 | |
76 scoped_refptr<TCPClientSocketPool> | |
77 HttpNetworkSession::CreateNewTCPSocketPool() { | |
78 // TODO(vandebo) when we've completely converted to pools, the base TCP | |
79 // pool name should get changed to TCP instead of Transport. | |
80 return new TCPClientSocketPool(max_sockets_, | |
81 max_sockets_per_group_, | |
82 "Transport", | |
83 host_resolver_, | |
84 socket_factory_); | |
85 } | |
86 | |
87 scoped_refptr<SOCKSClientSocketPool> | |
88 HttpNetworkSession::CreateNewSOCKSSocketPool() { | |
89 return new SOCKSClientSocketPool( | |
90 max_sockets_, max_sockets_per_group_, "SOCKS", host_resolver_, | |
91 new TCPClientSocketPool(max_sockets_, max_sockets_per_group_, | |
92 "TCPForSOCKS", host_resolver_, | |
93 socket_factory_)); | |
94 } | 75 } |
95 | 76 |
96 } // namespace net | 77 } // namespace net |
OLD | NEW |