Chromium Code Reviews| Index: net/socket/tcp_client_socket.cc |
| diff --git a/net/socket/tcp_client_socket.cc b/net/socket/tcp_client_socket.cc |
| index 56238ba0d12cb5412df6fc317770ea9aa561fe24..4a43d56e37f954c97626b4432b3399731498883e 100644 |
| --- a/net/socket/tcp_client_socket.cc |
| +++ b/net/socket/tcp_client_socket.cc |
| @@ -14,27 +14,36 @@ |
| #include "net/base/io_buffer.h" |
| #include "net/base/ip_endpoint.h" |
| #include "net/base/net_errors.h" |
| +#include "net/base/socket_performance_watcher.h" |
| namespace net { |
| -TCPClientSocket::TCPClientSocket(const AddressList& addresses, |
| - net::NetLog* net_log, |
| - const net::NetLog::Source& source) |
| - : socket_(new TCPSocket(net_log, source)), |
| +TCPClientSocket::TCPClientSocket( |
| + const AddressList& addresses, |
| + scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher, |
| + net::NetLog* net_log, |
| + const net::NetLog::Source& source) |
| + : socket_performance_watcher_(socket_performance_watcher.get()), |
| + socket_(new TCPSocket(std::move(socket_performance_watcher), |
|
Ryan Sleevi
2016/04/11 22:06:55
This is an intrinsically dangerous pattern (the .g
tbansal1
2016/04/12 16:14:33
I agree. I am not sure what's the best approach he
Ryan Sleevi
2016/04/12 21:08:31
Friending is almost always the wrong decision. Cer
tbansal1
2016/04/12 22:39:19
Acknowledged.
|
| + net_log, |
| + source)), |
| addresses_(addresses), |
| current_address_index_(-1), |
| next_connect_state_(CONNECT_STATE_NONE), |
| previously_disconnected_(false), |
| - total_received_bytes_(0) {} |
| + total_received_bytes_(0), |
| + notify_reset_socket_performance_watcher_(false) {} |
| TCPClientSocket::TCPClientSocket(scoped_ptr<TCPSocket> connected_socket, |
| const IPEndPoint& peer_address) |
| - : socket_(std::move(connected_socket)), |
| + : socket_performance_watcher_(nullptr), |
| + socket_(std::move(connected_socket)), |
| addresses_(AddressList(peer_address)), |
| current_address_index_(0), |
| next_connect_state_(CONNECT_STATE_NONE), |
| previously_disconnected_(false), |
| - total_received_bytes_(0) { |
| + total_received_bytes_(0), |
| + notify_reset_socket_performance_watcher_(false) { |
|
Ryan Sleevi
2016/04/11 22:06:56
This is really just
is_first_connection_ isn't it
tbansal1
2016/04/12 16:14:33
Removed the variable.
|
| DCHECK(socket_); |
| socket_->SetDefaultOptionsForClient(); |
| @@ -152,6 +161,9 @@ int TCPClientSocket::DoConnect() { |
| } |
| } |
| + if (socket_performance_watcher_ && notify_reset_socket_performance_watcher_) |
| + socket_performance_watcher_->OnConnectionChanged(); |
| + |
| // |socket_| is owned by this class and the callback won't be run once |
| // |socket_| is gone. Therefore, it is safe to use base::Unretained() here. |
| return socket_->Connect(endpoint, |
| @@ -195,6 +207,7 @@ void TCPClientSocket::DoDisconnect() { |
| // disconnected. |
| previously_disconnected_ = socket_->IsValid() && current_address_index_ >= 0; |
| socket_->Close(); |
| + notify_reset_socket_performance_watcher_ = true; |
| } |
| bool TCPClientSocket::IsConnected() const { |