Index: net/socket/tcp_client_socket_win.cc |
=================================================================== |
--- net/socket/tcp_client_socket_win.cc (revision 90003) |
+++ net/socket/tcp_client_socket_win.cc (working copy) |
@@ -323,7 +323,9 @@ |
next_connect_state_(CONNECT_STATE_NONE), |
connect_os_error_(0), |
net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)), |
- previously_disconnected_(false) { |
+ previously_disconnected_(false), |
+ num_bytes_read_(0), |
+ connect_time_micros_(-1) { |
scoped_refptr<NetLog::EventParameters> params; |
if (source.is_valid()) |
params = new NetLogSourceParameter("source_dependency", source); |
@@ -484,6 +486,7 @@ |
core_->write_overlapped_.hEvent = WSACreateEvent(); |
+ connect_start_time_ = base::TimeTicks::Now(); |
if (!connect(socket_, ai->ai_addr, static_cast<int>(ai->ai_addrlen))) { |
// Connected without waiting! |
// |
@@ -522,6 +525,8 @@ |
net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT_ATTEMPT, params); |
if (result == OK) { |
+ connect_time_micros_ = (base::TimeTicks::Now() - |
+ connect_start_time_).ToInternalValue(); |
use_history_.set_was_ever_connected(); |
return OK; // Done! |
} |
@@ -658,6 +663,14 @@ |
return false; |
} |
+int64 TCPClientSocketWin::NumBytesRead() const { |
+ return num_bytes_read_; |
+} |
+ |
+int TCPClientSocketWin::GetConnectTimeMicros() const { |
+ return connect_time_micros_; |
+} |
+ |
int TCPClientSocketWin::Read(IOBuffer* buf, |
int buf_len, |
CompletionCallback* callback) { |
@@ -688,6 +701,7 @@ |
base::MemoryDebug::MarkAsInitialized(core_->read_buffer_.buf, num); |
base::StatsCounter read_bytes("tcp.read_bytes"); |
read_bytes.Add(num); |
+ num_bytes_read_ += num; |
if (num > 0) |
use_history_.set_was_used_to_convey_data(); |
net_log_.AddByteTransferEvent(NetLog::TYPE_SOCKET_BYTES_RECEIVED, num, |
@@ -858,6 +872,7 @@ |
if (ok) { |
base::StatsCounter read_bytes("tcp.read_bytes"); |
read_bytes.Add(num_bytes); |
+ num_bytes_read_ += num_bytes; |
if (num_bytes > 0) |
use_history_.set_was_used_to_convey_data(); |
net_log_.AddByteTransferEvent(NetLog::TYPE_SOCKET_BYTES_RECEIVED, |