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

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

Issue 1355063004: Template methods on Timer classes instead of the classes themselves. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: timer: fixcaller Created 5 years, 2 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
« no previous file with comments | « net/proxy/proxy_script_decider.h ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // 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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 void LogConnectCompletion(int net_error); 129 void LogConnectCompletion(int net_error);
130 130
131 // Alerts the delegate that the ConnectJob has timed out. 131 // Alerts the delegate that the ConnectJob has timed out.
132 void OnTimeout(); 132 void OnTimeout();
133 133
134 const std::string group_name_; 134 const std::string group_name_;
135 const base::TimeDelta timeout_duration_; 135 const base::TimeDelta timeout_duration_;
136 // TODO(akalin): Support reprioritization. 136 // TODO(akalin): Support reprioritization.
137 const RequestPriority priority_; 137 const RequestPriority priority_;
138 // Timer to abort jobs that take too long. 138 // Timer to abort jobs that take too long.
139 base::OneShotTimer<ConnectJob> timer_; 139 base::OneShotTimer timer_;
140 Delegate* delegate_; 140 Delegate* delegate_;
141 scoped_ptr<StreamSocket> socket_; 141 scoped_ptr<StreamSocket> socket_;
142 BoundNetLog net_log_; 142 BoundNetLog net_log_;
143 // A ConnectJob is idle until Connect() has been called. 143 // A ConnectJob is idle until Connect() has been called.
144 bool idle_; 144 bool idle_;
145 145
146 DISALLOW_COPY_AND_ASSIGN(ConnectJob); 146 DISALLOW_COPY_AND_ASSIGN(ConnectJob);
147 }; 147 };
148 148
149 namespace internal { 149 namespace internal {
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 // preconnect and decremented when a preconnect is assigned, or when there 487 // preconnect and decremented when a preconnect is assigned, or when there
488 // are fewer than |unassigned_job_count_| ConnectJobs. Not incremented 488 // are fewer than |unassigned_job_count_| ConnectJobs. Not incremented
489 // when a request is cancelled. 489 // when a request is cancelled.
490 size_t unassigned_job_count_; 490 size_t unassigned_job_count_;
491 491
492 std::list<IdleSocket> idle_sockets_; 492 std::list<IdleSocket> idle_sockets_;
493 std::list<ConnectJob*> jobs_; 493 std::list<ConnectJob*> jobs_;
494 RequestQueue pending_requests_; 494 RequestQueue pending_requests_;
495 int active_socket_count_; // number of active sockets used by clients 495 int active_socket_count_; // number of active sockets used by clients
496 // A timer for when to start the backup job. 496 // A timer for when to start the backup job.
497 base::OneShotTimer<Group> backup_job_timer_; 497 base::OneShotTimer backup_job_timer_;
498 }; 498 };
499 499
500 typedef std::map<std::string, Group*> GroupMap; 500 typedef std::map<std::string, Group*> GroupMap;
501 501
502 typedef std::set<ConnectJob*> ConnectJobSet; 502 typedef std::set<ConnectJob*> ConnectJobSet;
503 503
504 struct CallbackResultPair { 504 struct CallbackResultPair {
505 CallbackResultPair(); 505 CallbackResultPair();
506 CallbackResultPair(const CompletionCallback& callback_in, int result_in); 506 CallbackResultPair(const CompletionCallback& callback_in, int result_in);
507 ~CallbackResultPair(); 507 ~CallbackResultPair();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 608
609 GroupMap group_map_; 609 GroupMap group_map_;
610 610
611 // Map of the ClientSocketHandles for which we have a pending Task to invoke a 611 // Map of the ClientSocketHandles for which we have a pending Task to invoke a
612 // callback. This is necessary since, before we invoke said callback, it's 612 // callback. This is necessary since, before we invoke said callback, it's
613 // possible that the request is cancelled. 613 // possible that the request is cancelled.
614 PendingCallbackMap pending_callback_map_; 614 PendingCallbackMap pending_callback_map_;
615 615
616 // Timer used to periodically prune idle sockets that timed out or can't be 616 // Timer used to periodically prune idle sockets that timed out or can't be
617 // reused. 617 // reused.
618 base::RepeatingTimer<ClientSocketPoolBaseHelper> timer_; 618 base::RepeatingTimer timer_;
619 619
620 // The total number of idle sockets in the system. 620 // The total number of idle sockets in the system.
621 int idle_socket_count_; 621 int idle_socket_count_;
622 622
623 // Number of connecting sockets across all groups. 623 // Number of connecting sockets across all groups.
624 int connecting_socket_count_; 624 int connecting_socket_count_;
625 625
626 // Number of connected sockets we handed out across all groups. 626 // Number of connected sockets we handed out across all groups.
627 int handed_out_socket_count_; 627 int handed_out_socket_count_;
628 628
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 }; 872 };
873 873
874 internal::ClientSocketPoolBaseHelper helper_; 874 internal::ClientSocketPoolBaseHelper helper_;
875 875
876 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolBase); 876 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolBase);
877 }; 877 };
878 878
879 } // namespace net 879 } // namespace net
880 880
881 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_BASE_H_ 881 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_BASE_H_
OLDNEW
« no previous file with comments | « net/proxy/proxy_script_decider.h ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698