| Index: net/socket/tcp_socket_posix.h
|
| diff --git a/net/socket/tcp_socket_posix.h b/net/socket/tcp_socket_posix.h
|
| index 98849e45a1918d1e34e1cbc550d18621e4f22d47..d092b572da72d4361c43be637a3ba176f6c25486 100644
|
| --- a/net/socket/tcp_socket_posix.h
|
| +++ b/net/socket/tcp_socket_posix.h
|
| @@ -15,8 +15,13 @@
|
| #include "net/base/address_family.h"
|
| #include "net/base/completion_callback.h"
|
| #include "net/base/net_export.h"
|
| +#include "net/base/socket_performance_watcher.h"
|
| #include "net/log/net_log.h"
|
|
|
| +namespace base {
|
| +class TickClock;
|
| +}
|
| +
|
| namespace net {
|
|
|
| class AddressList;
|
| @@ -26,7 +31,12 @@ class SocketPosix;
|
|
|
| class NET_EXPORT TCPSocketPosix {
|
| public:
|
| - TCPSocketPosix(NetLog* net_log, const NetLog::Source& source);
|
| + // |socket_performance_watcher| is notified of the performance metrics related
|
| + // to this socket. |socket_performance_watcher| may be null.
|
| + TCPSocketPosix(
|
| + scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher,
|
| + NetLog* net_log,
|
| + const NetLog::Source& source);
|
| virtual ~TCPSocketPosix();
|
|
|
| int Open(AddressFamily family);
|
| @@ -95,6 +105,8 @@ class NET_EXPORT TCPSocketPosix {
|
| void StartLoggingMultipleConnectAttempts(const AddressList& addresses);
|
| void EndLoggingMultipleConnectAttempts(int net_error);
|
|
|
| + void SetTickClockForTesting(scoped_ptr<base::TickClock> tick_clock);
|
| +
|
| const BoundNetLog& net_log() const { return net_log_; }
|
|
|
| private:
|
| @@ -177,8 +189,8 @@ class NET_EXPORT TCPSocketPosix {
|
| int BuildTcpSocketPosix(scoped_ptr<TCPSocketPosix>* tcp_socket,
|
| IPEndPoint* address);
|
|
|
| - void ConnectCompleted(const CompletionCallback& callback, int rv) const;
|
| - int HandleConnectCompleted(int rv) const;
|
| + void ConnectCompleted(const CompletionCallback& callback, int rv);
|
| + int HandleConnectCompleted(int rv);
|
| void LogConnectBegin(const AddressList& addresses) const;
|
| void LogConnectEnd(int net_error) const;
|
|
|
| @@ -195,12 +207,30 @@ class NET_EXPORT TCPSocketPosix {
|
| int buf_len,
|
| const CompletionCallback& callback);
|
|
|
| + // Notifies |socket_performance_watcher_| of the latest RTT estimate available
|
| + // from the tcp_info struct for this TCP socket.
|
| + void NotifySocketPerformanceWatcher();
|
| +
|
| // Called after the first read completes on a TCP FastOpen socket.
|
| void UpdateTCPFastOpenStatusAfterRead();
|
|
|
| scoped_ptr<SocketPosix> socket_;
|
| scoped_ptr<SocketPosix> accept_socket_;
|
|
|
| + // Socket performance statistics (such as RTT) are reported to the
|
| + // |socket_performance_watcher_|. May be nullptr.
|
| + scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher_;
|
| +
|
| + scoped_ptr<base::TickClock> tick_clock_;
|
| +
|
| + // Minimum interval betweeen consecutive notifications to
|
| + // |socket_performance_watcher_|.
|
| + const base::TimeDelta rtt_notifications_minimum_interval_;
|
| +
|
| + // Time when the |socket_performance_watcher_| was last notified of updated
|
| + // RTT.
|
| + base::TimeTicks last_rtt_notification_;
|
| +
|
| // Enables experimental TCP FastOpen option.
|
| bool use_tcp_fastopen_;
|
|
|
|
|