OLD | NEW |
| (Empty) |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef NET_BASE_SOCKET_PERFORMANCE_WATCHER_H_ | |
6 #define NET_BASE_SOCKET_PERFORMANCE_WATCHER_H_ | |
7 | |
8 #include "net/base/net_export.h" | |
9 | |
10 namespace base { | |
11 class TimeDelta; | |
12 } // namespace base | |
13 | |
14 namespace net { | |
15 | |
16 // SocketPerformanceWatcher is the base class for recording and aggregating | |
17 // per-socket statistics. SocketPerformanceWatcher must be used on a single | |
18 // thread. | |
19 class NET_EXPORT_PRIVATE SocketPerformanceWatcher { | |
20 public: | |
21 virtual ~SocketPerformanceWatcher() {} | |
22 | |
23 // Returns true if |this| SocketPerformanceWatcher is interested in receiving | |
24 // an updated RTT estimate (via OnUpdatedRTTAvailable). | |
25 virtual bool ShouldNotifyUpdatedRTT() const = 0; | |
26 | |
27 // Notifies |this| SocketPerformanceWatcher of updated transport layer RTT | |
28 // from this device to the remote transport layer endpoint. This method is | |
29 // called immediately after the observation is made, hence no timestamp. | |
30 // There is no guarantee that OnUpdatedRTTAvailable will be called every time | |
31 // an updated RTT is available as the socket may throttle the | |
32 // OnUpdatedRTTAvailable call for various reasons, including performance. | |
33 virtual void OnUpdatedRTTAvailable(const base::TimeDelta& rtt) = 0; | |
34 | |
35 // Notifies that |this| watcher will be reused to watch a socket that belongs | |
36 // to a different transport layer connection. Note: The new connection shares | |
37 // the same protocol as the previously watched socket. | |
38 virtual void OnConnectionChanged() = 0; | |
39 }; | |
40 | |
41 } // namespace net | |
42 | |
43 #endif // NET_BASE_SOCKET_PERFORMANCE_WATCHER_H_ | |
OLD | NEW |