| Index: net/socket/tcp_client_socket_libevent.cc
|
| diff --git a/net/socket/tcp_client_socket_libevent.cc b/net/socket/tcp_client_socket_libevent.cc
|
| index db00c55d055a7143b6e3170f343890b7e895b0bc..b64523d0c41362f3cbedb92319f26a064d3ced8b 100644
|
| --- a/net/socket/tcp_client_socket_libevent.cc
|
| +++ b/net/socket/tcp_client_socket_libevent.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -122,7 +122,8 @@ bool ShouldTryNextAddress(int os_error) {
|
|
|
| //-----------------------------------------------------------------------------
|
|
|
| -TCPClientSocketLibevent::TCPClientSocketLibevent(const AddressList& addresses)
|
| +TCPClientSocketLibevent::TCPClientSocketLibevent(const AddressList& addresses,
|
| + net::NetLog* net_log)
|
| : socket_(kInvalidSocket),
|
| addresses_(addresses),
|
| current_ai_(addresses_.head()),
|
| @@ -130,25 +131,25 @@ TCPClientSocketLibevent::TCPClientSocketLibevent(const AddressList& addresses)
|
| read_watcher_(this),
|
| write_watcher_(this),
|
| read_callback_(NULL),
|
| - write_callback_(NULL) {
|
| + write_callback_(NULL),
|
| + net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)) {
|
| }
|
|
|
| TCPClientSocketLibevent::~TCPClientSocketLibevent() {
|
| Disconnect();
|
| + net_log_.AddEvent(NetLog::TYPE_TCP_SOCKET_DONE);
|
| }
|
|
|
| -int TCPClientSocketLibevent::Connect(CompletionCallback* callback,
|
| - const BoundNetLog& net_log) {
|
| +int TCPClientSocketLibevent::Connect(CompletionCallback* callback) {
|
| // If already connected, then just return OK.
|
| if (socket_ != kInvalidSocket)
|
| return OK;
|
|
|
| DCHECK(!waiting_connect_);
|
| - DCHECK(!net_log_.net_log());
|
|
|
| TRACE_EVENT_BEGIN("socket.connect", this, "");
|
|
|
| - net_log.BeginEvent(NetLog::TYPE_TCP_CONNECT);
|
| + net_log_.BeginEvent(NetLog::TYPE_TCP_CONNECT);
|
|
|
| int rv = DoConnect();
|
|
|
| @@ -156,12 +157,11 @@ int TCPClientSocketLibevent::Connect(CompletionCallback* callback,
|
| // Synchronous operation not supported.
|
| DCHECK(callback);
|
|
|
| - net_log_ = net_log;
|
| waiting_connect_ = true;
|
| write_callback_ = callback;
|
| } else {
|
| TRACE_EVENT_END("socket.connect", this, "");
|
| - net_log.EndEvent(NetLog::TYPE_TCP_CONNECT);
|
| + net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT);
|
| }
|
|
|
| return rv;
|
| @@ -277,6 +277,7 @@ int TCPClientSocketLibevent::Read(IOBuffer* buf,
|
| int nread = HANDLE_EINTR(read(socket_, buf->data(), buf_len));
|
| if (nread >= 0) {
|
| TRACE_EVENT_END("socket.read", this, StringPrintf("%d bytes", nread));
|
| + net_log_.AddEventWithInteger(NetLog::TYPE_SOCKET_BYTES_RECEIVED, nread);
|
| return nread;
|
| }
|
| if (errno != EAGAIN && errno != EWOULDBLOCK) {
|
| @@ -311,6 +312,7 @@ int TCPClientSocketLibevent::Write(IOBuffer* buf,
|
| int nwrite = HANDLE_EINTR(write(socket_, buf->data(), buf_len));
|
| if (nwrite >= 0) {
|
| TRACE_EVENT_END("socket.write", this, StringPrintf("%d bytes", nwrite));
|
| + net_log_.AddEventWithInteger(NetLog::TYPE_SOCKET_BYTES_SENT, nwrite);
|
| return nwrite;
|
| }
|
| if (errno != EAGAIN && errno != EWOULDBLOCK)
|
| @@ -403,11 +405,9 @@ void TCPClientSocketLibevent::DidCompleteConnect() {
|
| const addrinfo* next = current_ai_->ai_next;
|
| Disconnect();
|
| current_ai_ = next;
|
| - BoundNetLog net_log = net_log_;
|
| - net_log_ = BoundNetLog();
|
| TRACE_EVENT_END("socket.connect", this, "");
|
| - net_log.EndEvent(NetLog::TYPE_TCP_CONNECT);
|
| - result = Connect(write_callback_, net_log);
|
| + net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT);
|
| + result = Connect(write_callback_);
|
| } else {
|
| result = MapConnectError(os_error);
|
| bool ok = write_socket_watcher_.StopWatchingFileDescriptor();
|
| @@ -415,7 +415,6 @@ void TCPClientSocketLibevent::DidCompleteConnect() {
|
| waiting_connect_ = false;
|
| TRACE_EVENT_END("socket.connect", this, "");
|
| net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT);
|
| - net_log_ = BoundNetLog();
|
| }
|
|
|
| if (result != ERR_IO_PENDING) {
|
| @@ -433,6 +432,7 @@ void TCPClientSocketLibevent::DidCompleteRead() {
|
| TRACE_EVENT_END("socket.read", this,
|
| StringPrintf("%d bytes", bytes_transferred));
|
| result = bytes_transferred;
|
| + net_log_.AddEventWithInteger(NetLog::TYPE_SOCKET_BYTES_RECEIVED, result);
|
| } else {
|
| result = MapPosixError(errno);
|
| }
|
| @@ -456,6 +456,7 @@ void TCPClientSocketLibevent::DidCompleteWrite() {
|
| result = bytes_transferred;
|
| TRACE_EVENT_END("socket.write", this,
|
| StringPrintf("%d bytes", bytes_transferred));
|
| + net_log_.AddEventWithInteger(NetLog::TYPE_SOCKET_BYTES_SENT, result);
|
| } else {
|
| result = MapPosixError(errno);
|
| }
|
|
|