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

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

Issue 368001: Second patch in making destructors of refcounted objects private. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 | Annotate | Revision Log
OLDNEW
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 // A ClientSocketPoolBase is used to restrict the number of sockets open at 5 // A ClientSocketPoolBase is used to restrict the number of sockets open at
6 // a time. It also maintains a list of idle persistent sockets for reuse. 6 // a time. It also maintains a list of idle persistent sockets for reuse.
7 // Subclasses of ClientSocketPool should compose ClientSocketPoolBase to handle 7 // Subclasses of ClientSocketPool should compose ClientSocketPoolBase to handle
8 // the core logic of (1) restricting the number of active (connected or 8 // the core logic of (1) restricting the number of active (connected or
9 // connecting) sockets per "group" (generally speaking, the hostname), (2) 9 // connecting) sockets per "group" (generally speaking, the hostname), (2)
10 // maintaining a per-group list of idle, persistent sockets for reuse, and (3) 10 // maintaining a per-group list of idle, persistent sockets for reuse, and (3)
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 private: 161 private:
162 DISALLOW_COPY_AND_ASSIGN(ConnectJobFactory); 162 DISALLOW_COPY_AND_ASSIGN(ConnectJobFactory);
163 }; 163 };
164 164
165 ClientSocketPoolBaseHelper(int max_sockets, 165 ClientSocketPoolBaseHelper(int max_sockets,
166 int max_sockets_per_group, 166 int max_sockets_per_group,
167 base::TimeDelta unused_idle_socket_timeout, 167 base::TimeDelta unused_idle_socket_timeout,
168 base::TimeDelta used_idle_socket_timeout, 168 base::TimeDelta used_idle_socket_timeout,
169 ConnectJobFactory* connect_job_factory); 169 ConnectJobFactory* connect_job_factory);
170 170
171 ~ClientSocketPoolBaseHelper();
172
173 // See ClientSocketPool::RequestSocket for documentation on this function. 171 // See ClientSocketPool::RequestSocket for documentation on this function.
174 // Note that |request| must be heap allocated. If ERR_IO_PENDING is returned, 172 // Note that |request| must be heap allocated. If ERR_IO_PENDING is returned,
175 // then ClientSocketPoolBaseHelper takes ownership of |request|. 173 // then ClientSocketPoolBaseHelper takes ownership of |request|.
176 int RequestSocket(const std::string& group_name, const Request* request); 174 int RequestSocket(const std::string& group_name, const Request* request);
177 175
178 // See ClientSocketPool::CancelRequest for documentation on this function. 176 // See ClientSocketPool::CancelRequest for documentation on this function.
179 void CancelRequest(const std::string& group_name, 177 void CancelRequest(const std::string& group_name,
180 const ClientSocketHandle* handle); 178 const ClientSocketHandle* handle);
181 179
182 // See ClientSocketPool::ReleaseSocket for documentation on this function. 180 // See ClientSocketPool::ReleaseSocket for documentation on this function.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 213
216 int NumConnectJobsInGroup(const std::string& group_name) const { 214 int NumConnectJobsInGroup(const std::string& group_name) const {
217 return group_map_.find(group_name)->second.jobs.size(); 215 return group_map_.find(group_name)->second.jobs.size();
218 } 216 }
219 217
220 // Closes all idle sockets if |force| is true. Else, only closes idle 218 // Closes all idle sockets if |force| is true. Else, only closes idle
221 // sockets that timed out or can't be reused. Made public for testing. 219 // sockets that timed out or can't be reused. Made public for testing.
222 void CleanupIdleSockets(bool force); 220 void CleanupIdleSockets(bool force);
223 221
224 private: 222 private:
223 friend class base::RefCounted<ClientSocketPoolBaseHelper>;
224
225 ~ClientSocketPoolBaseHelper();
226
225 // Entry for a persistent socket which became idle at time |start_time|. 227 // Entry for a persistent socket which became idle at time |start_time|.
226 struct IdleSocket { 228 struct IdleSocket {
227 IdleSocket() : socket(NULL), used(false) {} 229 IdleSocket() : socket(NULL), used(false) {}
228 ClientSocket* socket; 230 ClientSocket* socket;
229 base::TimeTicks start_time; 231 base::TimeTicks start_time;
230 bool used; // Indicates whether or not the socket has been used yet. 232 bool used; // Indicates whether or not the socket has been used yet.
231 233
232 // An idle socket should be removed if it can't be reused, or has been idle 234 // An idle socket should be removed if it can't be reused, or has been idle
233 // for too long. |now| is the current time value (TimeTicks::Now()). 235 // for too long. |now| is the current time value (TimeTicks::Now()).
234 // |timeout| is the length of time to wait before timing out an idle socket. 236 // |timeout| is the length of time to wait before timing out an idle socket.
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 // decoupled from socket connection jobs. A socket request may initiate a 557 // decoupled from socket connection jobs. A socket request may initiate a
556 // socket connection job, but there is no guarantee that that socket 558 // socket connection job, but there is no guarantee that that socket
557 // connection will service the request (for example, a released socket may 559 // connection will service the request (for example, a released socket may
558 // service the request sooner, or a higher priority request may come in 560 // service the request sooner, or a higher priority request may come in
559 // afterward and receive the socket from the job). 561 // afterward and receive the socket from the job).
560 void EnableLateBindingOfSockets(bool enabled); 562 void EnableLateBindingOfSockets(bool enabled);
561 563
562 } // namespace net 564 } // namespace net
563 565
564 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_BASE_H_ 566 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_BASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698