diff options
author | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-14 19:58:14 +0000 |
---|---|---|
committer | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-14 19:58:14 +0000 |
commit | 465aeb94531f3d73959412b2c8033005fb7c44d7 (patch) | |
tree | 39d71fab356d8816ac83b5bb819ce455027c3906 /net/socket/client_socket.cc | |
parent | 26783d056f3639d6310c41d1f499d5a9b13bbf90 (diff) | |
download | chromium_src-465aeb94531f3d73959412b2c8033005fb7c44d7.zip chromium_src-465aeb94531f3d73959412b2c8033005fb7c44d7.tar.gz chromium_src-465aeb94531f3d73959412b2c8033005fb7c44d7.tar.bz2 |
Add actual bytes sent/received to net-internals.
BUG=54745
TEST=manual
Review URL: http://codereview.chromium.org/3582007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62627 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/client_socket.cc')
-rw-r--r-- | net/socket/client_socket.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/net/socket/client_socket.cc b/net/socket/client_socket.cc index 8be3ae1..6f38eae 100644 --- a/net/socket/client_socket.cc +++ b/net/socket/client_socket.cc @@ -6,9 +6,47 @@ #include "base/metrics/field_trial.h" #include "base/metrics/histogram.h" +#include "base/string_number_conversions.h" +#include "base/values.h" namespace net { +namespace { + +// Parameters for SOCKET_BYTES_RECEIVED and SOCKET_BYTES_SENT events. +// Includes bytes transferred and, if |bytes| is not NULL, the bytes themselves. +class NetLogBytesTransferredParameter : public NetLog::EventParameters { + public: + NetLogBytesTransferredParameter(int byte_count, const char* bytes); + + virtual Value* ToValue() const; + + private: + const int byte_count_; + std::string hex_encoded_bytes_; + bool has_bytes_; +}; + +NetLogBytesTransferredParameter::NetLogBytesTransferredParameter( + int byte_count, const char* transferred_bytes) + : byte_count_(byte_count), + has_bytes_(false) { + if (transferred_bytes) { + hex_encoded_bytes_ = base::HexEncode(transferred_bytes, byte_count); + has_bytes_ = true; + } +} + +Value* NetLogBytesTransferredParameter::ToValue() const { + DictionaryValue* dict = new DictionaryValue(); + dict->SetInteger("byte_count", byte_count_); + if (has_bytes_) + dict->SetString("hex_encoded_bytes", hex_encoded_bytes_); + return dict; +} + +} // namespace + ClientSocket::UseHistory::UseHistory() : was_ever_connected_(false), was_used_to_convey_data_(false), @@ -98,4 +136,17 @@ bool ClientSocket::UseHistory::was_used_to_convey_data() const { return was_used_to_convey_data_; } +void ClientSocket::LogByteTransfer(const BoundNetLog& net_log, + NetLog::EventType event_type, + int byte_count, + char* bytes) const { + scoped_refptr<NetLog::EventParameters> params; + if (net_log.IsLoggingBytes()) { + params = new NetLogBytesTransferredParameter(byte_count, bytes); + } else { + params = new NetLogBytesTransferredParameter(byte_count, NULL); + } + net_log.AddEvent(event_type, params); +} + } // namespace net |