diff options
author | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-11 05:53:12 +0000 |
---|---|---|
committer | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-11 05:53:12 +0000 |
commit | c7f689be146dd9f7ff0c271f4fc736ea6adeaaa6 (patch) | |
tree | 48b59b1d951006663d744ae1300d12821beb5c73 /net/socket_stream/socket_stream.cc | |
parent | 38531587b801093b08a5d76664413bdf2b660467 (diff) | |
download | chromium_src-c7f689be146dd9f7ff0c271f4fc736ea6adeaaa6.zip chromium_src-c7f689be146dd9f7ff0c271f4fc736ea6adeaaa6.tar.gz chromium_src-c7f689be146dd9f7ff0c271f4fc736ea6adeaaa6.tar.bz2 |
Metrics of SocketStream
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/380004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31650 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket_stream/socket_stream.cc')
-rw-r--r-- | net/socket_stream/socket_stream.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/net/socket_stream/socket_stream.cc b/net/socket_stream/socket_stream.cc index fc8e77a..8ca8489 100644 --- a/net/socket_stream/socket_stream.cc +++ b/net/socket_stream/socket_stream.cc @@ -25,6 +25,7 @@ #include "net/socket/socks5_client_socket.h" #include "net/socket/socks_client_socket.h" #include "net/socket/tcp_client_socket.h" +#include "net/socket_stream/socket_stream_metrics.h" #include "net/socket_stream/socket_stream_throttle.h" #include "net/url_request/url_request.h" @@ -58,7 +59,8 @@ SocketStream::SocketStream(const GURL& url, Delegate* delegate) write_buf_size_(0), throttle_( SocketStreamThrottle::GetSocketStreamThrottleForScheme( - url.scheme())) { + url.scheme())), + metrics_(new SocketStreamMetrics(url)) { DCHECK(MessageLoop::current()) << "The current MessageLoop must exist"; DCHECK_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()) << @@ -199,6 +201,7 @@ void SocketStream::Finish(int result) { if (delegate_) delegate_->OnError(this, result); + metrics_->OnClose(); Delegate* delegate = delegate_; delegate_ = NULL; if (delegate) { @@ -229,6 +232,7 @@ int SocketStream::DidEstablishConnection() { return ERR_CONNECTION_FAILED; } next_state_ = STATE_READ_WRITE; + metrics_->OnConnected(); if (delegate_) delegate_->OnConnected(this, max_pending_send_allowed_); @@ -240,6 +244,7 @@ int SocketStream::DidReceiveData(int result) { DCHECK(read_buf_); DCHECK_GT(result, 0); int len = result; + metrics_->OnRead(len); result = throttle_->OnRead(this, read_buf_->data(), len, &io_callback_); if (delegate_) { // Notify recevied data to delegate. @@ -252,6 +257,7 @@ int SocketStream::DidReceiveData(int result) { int SocketStream::DidSendData(int result) { DCHECK_GT(result, 0); int len = result; + metrics_->OnWrite(len); result = throttle_->OnWrite(this, current_write_buf_->data(), len, &io_callback_); current_write_buf_ = NULL; @@ -425,6 +431,8 @@ int SocketStream::DoResolveHostComplete(int result) { if (result == OK) { next_state_ = STATE_TCP_CONNECT; result = throttle_->OnStartOpenConnection(this, &io_callback_); + if (result == net::ERR_IO_PENDING) + metrics_->OnWaitConnection(); } else { next_state_ = STATE_CLOSE; } @@ -437,6 +445,7 @@ int SocketStream::DoTcpConnect() { DCHECK(factory_); socket_.reset(factory_->CreateTCPClientSocket(addresses_)); // TODO(willchan): Plumb LoadLog into SocketStream. + metrics_->OnStartConnection(); return socket_->Connect(&io_callback_, NULL); } @@ -465,6 +474,7 @@ int SocketStream::DoWriteTunnelHeaders() { next_state_ = STATE_WRITE_TUNNEL_HEADERS_COMPLETE; if (!tunnel_request_headers_.get()) { + metrics_->OnTunnelProxy(); tunnel_request_headers_ = new RequestHeaders(); tunnel_request_headers_bytes_sent_ = 0; } @@ -645,6 +655,7 @@ int SocketStream::DoSOCKSConnect() { s = new SOCKSClientSocket(s, req_info, host_resolver_.get()); socket_.reset(s); // TODO(willchan): Plumb LoadLog into SocketStream. + metrics_->OnSOCKSProxy(); return socket_->Connect(&io_callback_, NULL); } @@ -666,6 +677,7 @@ int SocketStream::DoSSLConnect() { socket_.release(), url_.HostNoBrackets(), ssl_config_)); next_state_ = STATE_SSL_CONNECT_COMPLETE; // TODO(willchan): Plumb LoadLog into SocketStream. + metrics_->OnSSLConnection(); return socket_->Connect(&io_callback_, NULL); } |