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

Unified Diff: net/socket/tcp_socket_posix.cc

Issue 1376473003: Notify NQE of TCP RTT values (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed rsleevi comments Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: net/socket/tcp_socket_posix.cc
diff --git a/net/socket/tcp_socket_posix.cc b/net/socket/tcp_socket_posix.cc
index 0546e6075a57e7663640ac93993b8fa71f1cd3e4..5dba2b92382ed95c08c6efd2351c4f78bf0e328c 100644
--- a/net/socket/tcp_socket_posix.cc
+++ b/net/socket/tcp_socket_posix.cc
@@ -146,8 +146,12 @@ void CheckSupportAndMaybeEnableTCPFastOpen(bool user_enabled) {
#endif
}
-TCPSocketPosix::TCPSocketPosix(NetLog* net_log, const NetLog::Source& source)
- : use_tcp_fastopen_(false),
+TCPSocketPosix::TCPSocketPosix(
+ scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher,
+ NetLog* net_log,
+ const NetLog::Source& source)
+ : socket_performance_watcher_(std::move(socket_performance_watcher)),
+ use_tcp_fastopen_(false),
tcp_fastopen_write_attempted_(false),
tcp_fastopen_connected_(false),
tcp_fastopen_status_(TCP_FASTOPEN_STATUS_UNKNOWN),
@@ -524,14 +528,16 @@ int TCPSocketPosix::BuildTcpSocketPosix(scoped_ptr<TCPSocketPosix>* tcp_socket,
return ERR_ADDRESS_INVALID;
}
- tcp_socket->reset(new TCPSocketPosix(net_log_.net_log(), net_log_.source()));
+ tcp_socket->reset(
+ new TCPSocketPosix(nullptr, net_log_.net_log(), net_log_.source()));
(*tcp_socket)->socket_.reset(accept_socket_.release());
return OK;
}
void TCPSocketPosix::ConnectCompleted(const CompletionCallback& callback,
- int rv) const {
+ int rv) {
DCHECK_NE(ERR_IO_PENDING, rv);
+ NotifySocketPerformanceWatcher();
callback.Run(HandleConnectCompleted(rv));
}
@@ -585,6 +591,7 @@ void TCPSocketPosix::ReadCompleted(const scoped_refptr<IOBuffer>& buf,
const CompletionCallback& callback,
int rv) {
DCHECK_NE(ERR_IO_PENDING, rv);
+ NotifySocketPerformanceWatcher();
callback.Run(HandleReadCompleted(buf.get(), rv));
}
@@ -622,6 +629,7 @@ void TCPSocketPosix::WriteCompleted(const scoped_refptr<IOBuffer>& buf,
const CompletionCallback& callback,
int rv) {
DCHECK_NE(ERR_IO_PENDING, rv);
+ NotifySocketPerformanceWatcher();
callback.Run(HandleWriteCompleted(buf.get(), rv));
}
@@ -709,6 +717,32 @@ int TCPSocketPosix::TcpFastOpenWrite(IOBuffer* buf,
return socket_->WaitForWrite(buf, buf_len, callback);
}
+void TCPSocketPosix::NotifySocketPerformanceWatcher() {
+#if defined(TCP_INFO)
+ if (!socket_performance_watcher_)
+ return;
+
+ base::TimeTicks now = base::TimeTicks::Now();
+ if (now - last_socket_performance_watcher_rtt_notify_ <
+ socket_performance_watcher_->rtt_notification_interval()) {
+ return;
+ }
Ryan Sleevi 2016/02/25 22:48:47 Why is this a function of the socket - and not of
tbansal1 2016/02/26 23:43:34 Changed it to make it cleaner. Also, moved the log
+
+ last_socket_performance_watcher_rtt_notify_ = now;
+
+ tcp_info info;
+ if (!GetTcpInfo(socket_->socket_fd(), &info))
+ return;
+
+ if (info.tcpi_rtt > 0) {
+ // Zero RTT value indicates that tcp_info struct was not properly populated.
Ryan Sleevi 2016/02/25 22:48:47 COMMENT NIT: This comment reads weird, because it
tbansal1 2016/02/26 23:43:34 Done.
+ socket_performance_watcher_->OnUpdatedRTTAvailable(
+ base::TimeDelta::FromMicroseconds(info.tcpi_rtt));
+ }
+ UMA_HISTOGRAM_TIMES("SPW.TCPRTT.NotifyDelay", base::TimeTicks::Now() - now);
Ryan Sleevi 2016/02/25 22:48:47 Wow, this seems like a really gross histogram name
tbansal1 2016/02/26 23:43:34 This is now obsolete. Sorry, I did not know abbrev
+#endif // defined(TCP_INFO)
+}
+
void TCPSocketPosix::UpdateTCPFastOpenStatusAfterRead() {
DCHECK(tcp_fastopen_status_ == TCP_FASTOPEN_FAST_CONNECT_RETURN ||
tcp_fastopen_status_ == TCP_FASTOPEN_SLOW_CONNECT_RETURN);

Powered by Google App Engine
This is Rietveld 408576698