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

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

Issue 2678353003: Close idle H2 sockets when SpdySession is initialized. (Closed)
Patch Set: Self Created 3 years, 10 months 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/socket/client_socket_pool_manager_impl.h" 5 #include "net/socket/client_socket_pool_manager_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 it != transport_socket_pools_for_socks_proxies_.end(); 146 it != transport_socket_pools_for_socks_proxies_.end();
147 ++it) 147 ++it)
148 it->second->FlushWithError(error); 148 it->second->FlushWithError(error);
149 149
150 ssl_socket_pool_->FlushWithError(error); 150 ssl_socket_pool_->FlushWithError(error);
151 transport_socket_pool_->FlushWithError(error); 151 transport_socket_pool_->FlushWithError(error);
152 } 152 }
153 153
154 void ClientSocketPoolManagerImpl::CloseIdleSockets() { 154 void ClientSocketPoolManagerImpl::CloseIdleSockets() {
155 // Close sockets in the highest level pools first, since higher level pools' 155 // Close sockets in the highest level pools first, since higher level pools'
156 // sockets may release stuff to the lower level pools. 156 // sockets may release stuff to the lower level pools.
davidben 2017/03/02 22:00:51 Nit: it => pool or pair or something? (With a loop
xunjieli 2017/03/02 23:04:00 Acknowledged. No longer apply :)
157 for (SSLSocketPoolMap::const_iterator it = 157 for (const auto& it : ssl_socket_pools_for_proxies_)
158 ssl_socket_pools_for_proxies_.begin(); 158 it.second->CloseIdleSockets();
159 it != ssl_socket_pools_for_proxies_.end();
160 ++it)
161 it->second->CloseIdleSockets();
162 159
163 for (HTTPProxySocketPoolMap::const_iterator it = 160 for (const auto& it : http_proxy_socket_pools_)
164 http_proxy_socket_pools_.begin(); 161 it.second->CloseIdleSockets();
165 it != http_proxy_socket_pools_.end();
166 ++it)
167 it->second->CloseIdleSockets();
168 162
169 for (SSLSocketPoolMap::const_iterator it = 163 for (const auto& it : ssl_socket_pools_for_https_proxies_)
170 ssl_socket_pools_for_https_proxies_.begin(); 164 it.second->CloseIdleSockets();
171 it != ssl_socket_pools_for_https_proxies_.end();
172 ++it)
173 it->second->CloseIdleSockets();
174 165
175 for (TransportSocketPoolMap::const_iterator it = 166 for (const auto& it : transport_socket_pools_for_https_proxies_)
176 transport_socket_pools_for_https_proxies_.begin(); 167 it.second->CloseIdleSockets();
177 it != transport_socket_pools_for_https_proxies_.end();
178 ++it)
179 it->second->CloseIdleSockets();
180 168
181 for (TransportSocketPoolMap::const_iterator it = 169 for (const auto& it : transport_socket_pools_for_http_proxies_)
182 transport_socket_pools_for_http_proxies_.begin(); 170 it.second->CloseIdleSockets();
183 it != transport_socket_pools_for_http_proxies_.end();
184 ++it)
185 it->second->CloseIdleSockets();
186 171
187 for (SOCKSSocketPoolMap::const_iterator it = 172 for (const auto& it : socks_socket_pools_)
188 socks_socket_pools_.begin(); 173 it.second->CloseIdleSockets();
189 it != socks_socket_pools_.end();
190 ++it)
191 it->second->CloseIdleSockets();
192 174
193 for (TransportSocketPoolMap::const_iterator it = 175 for (const auto& it : transport_socket_pools_for_socks_proxies_)
194 transport_socket_pools_for_socks_proxies_.begin(); 176 it.second->CloseIdleSockets();
195 it != transport_socket_pools_for_socks_proxies_.end();
196 ++it)
197 it->second->CloseIdleSockets();
198 177
199 ssl_socket_pool_->CloseIdleSockets(); 178 ssl_socket_pool_->CloseIdleSockets();
200 transport_socket_pool_->CloseIdleSockets(); 179 transport_socket_pool_->CloseIdleSockets();
201 } 180 }
202 181
182 void ClientSocketPoolManagerImpl::CloseIdleSocketsInGroup(
183 const std::string& group_name) {
davidben 2017/03/02 22:00:51 This will close idle sockets with the same group n
xunjieli 2017/03/02 23:04:00 That's very neat! Done. Thanks for the suggestion.
184 // Close sockets in the highest level pools first, since higher level pools'
185 // sockets may release stuff to the lower level pools.
186 for (const auto& it : ssl_socket_pools_for_proxies_)
187 it.second->CloseIdleSocketsInGroup(group_name);
188
189 for (const auto& it : http_proxy_socket_pools_)
190 it.second->CloseIdleSocketsInGroup(group_name);
191
192 for (const auto& it : ssl_socket_pools_for_https_proxies_)
193 it.second->CloseIdleSocketsInGroup(group_name);
194
195 for (const auto& it : transport_socket_pools_for_https_proxies_)
196 it.second->CloseIdleSocketsInGroup(group_name);
197
198 for (const auto& it : transport_socket_pools_for_http_proxies_)
199 it.second->CloseIdleSocketsInGroup(group_name);
200
201 for (const auto& it : socks_socket_pools_)
202 it.second->CloseIdleSocketsInGroup(group_name);
203
204 for (const auto& it : transport_socket_pools_for_socks_proxies_)
205 it.second->CloseIdleSocketsInGroup(group_name);
206
207 ssl_socket_pool_->CloseIdleSocketsInGroup(group_name);
208 transport_socket_pool_->CloseIdleSocketsInGroup(group_name);
209 }
210
203 TransportClientSocketPool* 211 TransportClientSocketPool*
204 ClientSocketPoolManagerImpl::GetTransportSocketPool() { 212 ClientSocketPoolManagerImpl::GetTransportSocketPool() {
205 return transport_socket_pool_.get(); 213 return transport_socket_pool_.get();
206 } 214 }
207 215
208 SSLClientSocketPool* ClientSocketPoolManagerImpl::GetSSLSocketPool() { 216 SSLClientSocketPool* ClientSocketPoolManagerImpl::GetSSLSocketPool() {
209 return ssl_socket_pool_.get(); 217 return ssl_socket_pool_.get();
210 } 218 }
211 219
212 SOCKSClientSocketPool* ClientSocketPoolManagerImpl::GetSocketPoolForSOCKSProxy( 220 SOCKSClientSocketPool* ClientSocketPoolManagerImpl::GetSocketPoolForSOCKSProxy(
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED); 368 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED);
361 } 369 }
362 370
363 void ClientSocketPoolManagerImpl::DumpMemoryStats( 371 void ClientSocketPoolManagerImpl::DumpMemoryStats(
364 base::trace_event::ProcessMemoryDump* pmd, 372 base::trace_event::ProcessMemoryDump* pmd,
365 const std::string& parent_dump_absolute_name) const { 373 const std::string& parent_dump_absolute_name) const {
366 return ssl_socket_pool_->DumpMemoryStats(pmd, parent_dump_absolute_name); 374 return ssl_socket_pool_->DumpMemoryStats(pmd, parent_dump_absolute_name);
367 } 375 }
368 376
369 } // namespace net 377 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698