OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |