summaryrefslogtreecommitdiffstats
path: root/net/base
diff options
context:
space:
mode:
Diffstat (limited to 'net/base')
-rw-r--r--net/base/tcp_client_socket.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/net/base/tcp_client_socket.cc b/net/base/tcp_client_socket.cc
index 9b6959e..fc65995 100644
--- a/net/base/tcp_client_socket.cc
+++ b/net/base/tcp_client_socket.cc
@@ -4,6 +4,8 @@
#include "net/base/tcp_client_socket.h"
+#include "base/string_util.h"
+#include "base/trace_event.h"
#include "net/base/net_errors.h"
#include "net/base/winsock_init.h"
@@ -67,6 +69,7 @@ int TCPClientSocket::Connect(CompletionCallback* callback) {
if (socket_ != INVALID_SOCKET)
return OK;
+ TRACE_EVENT_BEGIN("socket.connect", this, "");
const struct addrinfo* ai = current_ai_;
DCHECK(ai);
@@ -80,6 +83,7 @@ int TCPClientSocket::Connect(CompletionCallback* callback) {
WSAEventSelect(socket_, overlapped_.hEvent, FD_CONNECT);
if (!connect(socket_, ai->ai_addr, static_cast<int>(ai->ai_addrlen))) {
+ TRACE_EVENT_END("socket.connect", this, "");
// Connected without waiting!
return OK;
}
@@ -105,6 +109,8 @@ void TCPClientSocket::Disconnect() {
if (socket_ == INVALID_SOCKET)
return;
+ TRACE_EVENT_INSTANT("socket.disconnect", this, "");
+
// Make sure the message loop is not watching this object anymore.
watcher_.StopWatching();
@@ -224,6 +230,7 @@ void TCPClientSocket::DoCallback(int rv) {
void TCPClientSocket::DidCompleteConnect() {
int result;
+ TRACE_EVENT_END("socket.connect", this, "");
wait_state_ = NOT_WAITING;
WSANETWORKEVENTS events;
@@ -263,6 +270,13 @@ void TCPClientSocket::DidCompleteIO() {
BOOL ok = WSAGetOverlappedResult(
socket_, &overlapped_, &num_bytes, FALSE, &flags);
WSAResetEvent(overlapped_.hEvent);
+ if (wait_state_ == WAITING_READ) {
+ TRACE_EVENT_INSTANT("socket.read", this,
+ StringPrintf("%d bytes", num_bytes));
+ } else {
+ TRACE_EVENT_INSTANT("socket.write", this,
+ StringPrintf("%d bytes", num_bytes));
+ }
wait_state_ = NOT_WAITING;
DoCallback(ok ? num_bytes : MapWinsockError(WSAGetLastError()));
}