blob: 8665cbdcb5ef388f42c7f91fbb88f1ca5eeb37df [file] [log] [blame]
tbansalba8f4112015-09-03 21:57:191// 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
tbansalca83c002016-04-28 20:56:285#ifndef NET_SOCKET_SOCKET_PERFORMANCE_WATCHER_H_
6#define NET_SOCKET_SOCKET_PERFORMANCE_WATCHER_H_
tbansalba8f4112015-09-03 21:57:197
tbansalba8f4112015-09-03 21:57:198#include "net/base/net_export.h"
9
10namespace base {
11class TimeDelta;
12} // namespace base
13
14namespace net {
15
16// SocketPerformanceWatcher is the base class for recording and aggregating
tbansal0f56a39a2016-04-07 22:03:3817// per-socket statistics. SocketPerformanceWatcher must be used on a single
18// thread.
tbansalba8f4112015-09-03 21:57:1919class NET_EXPORT_PRIVATE SocketPerformanceWatcher {
20 public:
tbansal0f56a39a2016-04-07 22:03:3821 virtual ~SocketPerformanceWatcher() {}
tbansalc8a94ea2015-11-02 23:58:5122
tbansal0f56a39a2016-04-07 22:03:3823 // Returns true if |this| SocketPerformanceWatcher is interested in receiving
24 // an updated RTT estimate (via OnUpdatedRTTAvailable).
25 virtual bool ShouldNotifyUpdatedRTT() const = 0;
tbansalba8f4112015-09-03 21:57:1926
tbansal0f56a39a2016-04-07 22:03:3827 // 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;
tbansalba8f4112015-09-03 21:57:1934
tbansal0f56a39a2016-04-07 22:03:3835 // 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;
tbansalba8f4112015-09-03 21:57:1939};
40
41} // namespace net
42
tbansalca83c002016-04-28 20:56:2843#endif // NET_SOCKET_SOCKET_PERFORMANCE_WATCHER_H_