OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/base/client_socket_pool.h" | 5 #include "net/base/client_socket_pool.h" |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "net/base/client_socket.h" | 8 #include "net/base/client_socket.h" |
9 #include "net/base/client_socket_handle.h" | 9 #include "net/base/client_socket_handle.h" |
10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 // NOTE: We cannot refer to the handle argument after this method returns. | 115 // NOTE: We cannot refer to the handle argument after this method returns. |
116 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( | 116 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( |
117 this, &ClientSocketPool::DoReleaseSocket, handle->group_name_, | 117 this, &ClientSocketPool::DoReleaseSocket, handle->group_name_, |
118 handle->socket_)); | 118 handle->socket_)); |
119 } | 119 } |
120 | 120 |
121 void ClientSocketPool::CloseIdleSockets() { | 121 void ClientSocketPool::CloseIdleSockets() { |
122 CleanupIdleSockets(true); | 122 CleanupIdleSockets(true); |
123 } | 123 } |
124 | 124 |
| 125 int ClientSocketPool::IdleSocketCountInGroup( |
| 126 const std::string& group_name) const { |
| 127 GroupMap::const_iterator i = group_map_.find(group_name); |
| 128 DCHECK(i != group_map_.end()); |
| 129 |
| 130 return i->second.idle_sockets.size(); |
| 131 } |
| 132 |
125 bool ClientSocketPool::IdleSocket::ShouldCleanup(base::TimeTicks now) const { | 133 bool ClientSocketPool::IdleSocket::ShouldCleanup(base::TimeTicks now) const { |
126 bool timed_out = (now - start_time) >= | 134 bool timed_out = (now - start_time) >= |
127 base::TimeDelta::FromSeconds(kIdleTimeout); | 135 base::TimeDelta::FromSeconds(kIdleTimeout); |
128 return timed_out || !(*ptr)->IsConnectedAndIdle(); | 136 return timed_out || !(*ptr)->IsConnectedAndIdle(); |
129 } | 137 } |
130 | 138 |
131 void ClientSocketPool::CleanupIdleSockets(bool force) { | 139 void ClientSocketPool::CleanupIdleSockets(bool force) { |
132 if (idle_socket_count_ == 0) | 140 if (idle_socket_count_ == 0) |
133 return; | 141 return; |
134 | 142 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 } | 213 } |
206 | 214 |
207 // Delete group if no longer needed. | 215 // Delete group if no longer needed. |
208 if (group.active_socket_count == 0 && group.idle_sockets.empty()) { | 216 if (group.active_socket_count == 0 && group.idle_sockets.empty()) { |
209 DCHECK(group.pending_requests.empty()); | 217 DCHECK(group.pending_requests.empty()); |
210 group_map_.erase(i); | 218 group_map_.erase(i); |
211 } | 219 } |
212 } | 220 } |
213 | 221 |
214 } // namespace net | 222 } // namespace net |
OLD | NEW |