| 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 // 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 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 void ReleaseSocket(const std::string& group_name, | 286 void ReleaseSocket(const std::string& group_name, |
| 287 std::unique_ptr<StreamSocket> socket, | 287 std::unique_ptr<StreamSocket> socket, |
| 288 int id); | 288 int id); |
| 289 | 289 |
| 290 // See ClientSocketPool::FlushWithError for documentation on this function. | 290 // See ClientSocketPool::FlushWithError for documentation on this function. |
| 291 void FlushWithError(int error); | 291 void FlushWithError(int error); |
| 292 | 292 |
| 293 // See ClientSocketPool::CloseIdleSockets for documentation on this function. | 293 // See ClientSocketPool::CloseIdleSockets for documentation on this function. |
| 294 void CloseIdleSockets(); | 294 void CloseIdleSockets(); |
| 295 | 295 |
| 296 // See ClientSocketPool::CloseIdleSocketsInGroup for documentation. |
| 297 void CloseIdleSocketsInGroup(const std::string& group_name); |
| 298 |
| 296 // See ClientSocketPool::IdleSocketCount() for documentation on this function. | 299 // See ClientSocketPool::IdleSocketCount() for documentation on this function. |
| 297 int idle_socket_count() const { | 300 int idle_socket_count() const { |
| 298 return idle_socket_count_; | 301 return idle_socket_count_; |
| 299 } | 302 } |
| 300 | 303 |
| 301 // See ClientSocketPool::IdleSocketCountInGroup() for documentation on this | 304 // See ClientSocketPool::IdleSocketCountInGroup() for documentation on this |
| 302 // function. | 305 // function. |
| 303 int IdleSocketCountInGroup(const std::string& group_name) const; | 306 int IdleSocketCountInGroup(const std::string& group_name) const; |
| 304 | 307 |
| 305 // See ClientSocketPool::GetLoadState() for documentation on this function. | 308 // See ClientSocketPool::GetLoadState() for documentation on this function. |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 CallbackResultPair(const CallbackResultPair& other); | 533 CallbackResultPair(const CallbackResultPair& other); |
| 531 ~CallbackResultPair(); | 534 ~CallbackResultPair(); |
| 532 | 535 |
| 533 CompletionCallback callback; | 536 CompletionCallback callback; |
| 534 int result; | 537 int result; |
| 535 }; | 538 }; |
| 536 | 539 |
| 537 typedef std::map<const ClientSocketHandle*, CallbackResultPair> | 540 typedef std::map<const ClientSocketHandle*, CallbackResultPair> |
| 538 PendingCallbackMap; | 541 PendingCallbackMap; |
| 539 | 542 |
| 543 // Closes all idle sockets in |group| if |force| is true. Else, only closes |
| 544 // idle sockets in |group| that timed out with respect to |now| or can't be |
| 545 // reused. |
| 546 void CleanupIdleSocketsInGroup(bool force, |
| 547 Group* group, |
| 548 const base::TimeTicks& now); |
| 549 |
| 540 Group* GetOrCreateGroup(const std::string& group_name); | 550 Group* GetOrCreateGroup(const std::string& group_name); |
| 541 void RemoveGroup(const std::string& group_name); | 551 void RemoveGroup(const std::string& group_name); |
| 542 void RemoveGroup(GroupMap::iterator it); | 552 void RemoveGroup(GroupMap::iterator it); |
| 543 | 553 |
| 544 // Called when the number of idle sockets changes. | 554 // Called when the number of idle sockets changes. |
| 545 void IncrementIdleCount(); | 555 void IncrementIdleCount(); |
| 546 void DecrementIdleCount(); | 556 void DecrementIdleCount(); |
| 547 | 557 |
| 548 // Scans the group map for groups which have an available socket slot and | 558 // Scans the group map for groups which have an available socket slot and |
| 549 // at least one pending request. Returns true if any groups are stalled, and | 559 // at least one pending request. Returns true if any groups are stalled, and |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 int id) { | 809 int id) { |
| 800 return helper_.ReleaseSocket(group_name, std::move(socket), id); | 810 return helper_.ReleaseSocket(group_name, std::move(socket), id); |
| 801 } | 811 } |
| 802 | 812 |
| 803 void FlushWithError(int error) { helper_.FlushWithError(error); } | 813 void FlushWithError(int error) { helper_.FlushWithError(error); } |
| 804 | 814 |
| 805 bool IsStalled() const { return helper_.IsStalled(); } | 815 bool IsStalled() const { return helper_.IsStalled(); } |
| 806 | 816 |
| 807 void CloseIdleSockets() { return helper_.CloseIdleSockets(); } | 817 void CloseIdleSockets() { return helper_.CloseIdleSockets(); } |
| 808 | 818 |
| 819 void CloseIdleSocketsInGroup(const std::string& group_name) { |
| 820 return helper_.CloseIdleSocketsInGroup(group_name); |
| 821 } |
| 822 |
| 809 int idle_socket_count() const { return helper_.idle_socket_count(); } | 823 int idle_socket_count() const { return helper_.idle_socket_count(); } |
| 810 | 824 |
| 811 int IdleSocketCountInGroup(const std::string& group_name) const { | 825 int IdleSocketCountInGroup(const std::string& group_name) const { |
| 812 return helper_.IdleSocketCountInGroup(group_name); | 826 return helper_.IdleSocketCountInGroup(group_name); |
| 813 } | 827 } |
| 814 | 828 |
| 815 LoadState GetLoadState(const std::string& group_name, | 829 LoadState GetLoadState(const std::string& group_name, |
| 816 const ClientSocketHandle* handle) const { | 830 const ClientSocketHandle* handle) const { |
| 817 return helper_.GetLoadState(group_name, handle); | 831 return helper_.GetLoadState(group_name, handle); |
| 818 } | 832 } |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 897 }; | 911 }; |
| 898 | 912 |
| 899 internal::ClientSocketPoolBaseHelper helper_; | 913 internal::ClientSocketPoolBaseHelper helper_; |
| 900 | 914 |
| 901 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolBase); | 915 DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolBase); |
| 902 }; | 916 }; |
| 903 | 917 |
| 904 } // namespace net | 918 } // namespace net |
| 905 | 919 |
| 906 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_BASE_H_ | 920 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_BASE_H_ |
| OLD | NEW |