Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/quic_connection_logger.h" | 5 #include "net/quic/quic_connection_logger.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| 11 #include "net/base/net_log.h" | 11 #include "net/base/net_log.h" |
| 12 | 12 |
| 13 namespace net { | 13 namespace net { |
| 14 | 14 |
| 15 namespace { | 15 namespace { |
| 16 | 16 |
| 17 Value* NetLogQuicPacketCallback(const IPEndPoint* self_address, | 17 Value* NetLogQuicPacketCallback(const IPEndPoint* self_address, |
| 18 const IPEndPoint* peer_address, | 18 const IPEndPoint* peer_address, |
| 19 size_t packet_size, | 19 size_t packet_size, |
| 20 NetLog::LogLevel /* log_level */) { | 20 NetLog::LogLevel /* log_level */) { |
| 21 DictionaryValue* dict = new DictionaryValue(); | 21 DictionaryValue* dict = new DictionaryValue(); |
| 22 dict->SetString("self_address", self_address->ToString()); | 22 dict->SetString("self_address", self_address->ToString()); |
| 23 dict->SetString("peer_address", peer_address->ToString()); | 23 dict->SetString("peer_address", peer_address->ToString()); |
| 24 dict->SetInteger("size", packet_size); | 24 dict->SetInteger("size", packet_size); |
| 25 return dict; | 25 return dict; |
| 26 } | 26 } |
| 27 | 27 |
| 28 Value* NetLogQuicPacketSentCallback(QuicPacketSequenceNumber sequence_number, | |
| 29 EncryptionLevel level, | |
| 30 size_t packet_size, | |
| 31 int rv, | |
| 32 NetLog::LogLevel /* log_level */) { | |
| 33 DictionaryValue* dict = new DictionaryValue(); | |
|
eroman
2013/06/20 22:20:04
Drop the "t". It is cleaner.
Nah, just kidding :)
Ryan Hamilton
2013/06/20 22:44:16
:>
| |
| 34 dict->SetInteger("encryption_level", level); | |
| 35 dict->SetString("packet_sequence_number", | |
| 36 base::Uint64ToString(sequence_number)); | |
| 37 dict->SetInteger("size", packet_size); | |
| 38 if (rv < 0) { | |
| 39 dict->SetInteger("net_error", rv); | |
| 40 } | |
| 41 return dict; | |
| 42 } | |
| 43 | |
| 28 Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, | 44 Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, |
| 29 NetLog::LogLevel /* log_level */) { | 45 NetLog::LogLevel /* log_level */) { |
| 30 DictionaryValue* dict = new DictionaryValue(); | 46 DictionaryValue* dict = new DictionaryValue(); |
| 31 dict->SetString("guid", | 47 dict->SetString("guid", |
| 32 base::Uint64ToString(header->public_header.guid)); | 48 base::Uint64ToString(header->public_header.guid)); |
| 33 dict->SetInteger("reset_flag", header->public_header.reset_flag); | 49 dict->SetInteger("reset_flag", header->public_header.reset_flag); |
| 34 dict->SetInteger("version_flag", header->public_header.version_flag); | 50 dict->SetInteger("version_flag", header->public_header.version_flag); |
| 35 dict->SetString("packet_sequence_number", | 51 dict->SetString("packet_sequence_number", |
| 36 base::Uint64ToString(header->packet_sequence_number)); | 52 base::Uint64ToString(header->packet_sequence_number)); |
| 37 dict->SetInteger("entropy_flag", header->entropy_flag); | 53 dict->SetInteger("entropy_flag", header->entropy_flag); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 129 | 145 |
| 130 } // namespace | 146 } // namespace |
| 131 | 147 |
| 132 QuicConnectionLogger::QuicConnectionLogger(const BoundNetLog& net_log) | 148 QuicConnectionLogger::QuicConnectionLogger(const BoundNetLog& net_log) |
| 133 : net_log_(net_log) { | 149 : net_log_(net_log) { |
| 134 } | 150 } |
| 135 | 151 |
| 136 QuicConnectionLogger::~QuicConnectionLogger() { | 152 QuicConnectionLogger::~QuicConnectionLogger() { |
| 137 } | 153 } |
| 138 | 154 |
| 139 // QuicConnectionDebugVisitorInterface | 155 void QuicConnectionLogger::OnFrameAddedToPacket(const QuicFrame& frame) { |
| 156 switch (frame.type) { | |
| 157 case PADDING_FRAME: | |
| 158 break; | |
| 159 case STREAM_FRAME: | |
| 160 net_log_.AddEvent( | |
| 161 NetLog::TYPE_QUIC_SESSION_STREAM_FRAME_SENT, | |
| 162 base::Bind(&NetLogQuicStreamFrameCallback, frame.stream_frame)); | |
| 163 break; | |
| 164 case ACK_FRAME: | |
| 165 net_log_.AddEvent( | |
| 166 NetLog::TYPE_QUIC_SESSION_ACK_FRAME_SENT, | |
| 167 base::Bind(&NetLogQuicAckFrameCallback, frame.ack_frame)); | |
| 168 break; | |
| 169 case CONGESTION_FEEDBACK_FRAME: | |
| 170 net_log_.AddEvent( | |
| 171 NetLog::TYPE_QUIC_SESSION_CONGESTION_FEEDBACK_FRAME_SENT, | |
| 172 base::Bind(&NetLogQuicCongestionFeedbackFrameCallback, | |
| 173 frame.congestion_feedback_frame)); | |
| 174 break; | |
| 175 case RST_STREAM_FRAME: | |
| 176 net_log_.AddEvent( | |
| 177 NetLog::TYPE_QUIC_SESSION_RST_STREAM_FRAME_SENT, | |
| 178 base::Bind(&NetLogQuicRstStreamFrameCallback, | |
| 179 frame.rst_stream_frame)); | |
| 180 break; | |
| 181 case CONNECTION_CLOSE_FRAME: | |
| 182 net_log_.AddEvent( | |
| 183 NetLog::TYPE_QUIC_SESSION_CONNECTION_CLOSE_FRAME_SENT, | |
| 184 base::Bind(&NetLogQuicConnectionCloseFrameCallback, | |
| 185 frame.connection_close_frame)); | |
| 186 break; | |
| 187 case GOAWAY_FRAME: | |
| 188 break; | |
| 189 default: | |
| 190 DCHECK(false) << "Illegal frame type: " << frame.type; | |
| 191 } | |
| 192 } | |
| 193 | |
| 194 void QuicConnectionLogger::OnPacketSent( | |
| 195 QuicPacketSequenceNumber sequence_number, | |
| 196 EncryptionLevel level, | |
| 197 const QuicEncryptedPacket& packet, | |
| 198 int rv) { | |
| 199 net_log_.AddEvent( | |
| 200 NetLog::TYPE_QUIC_SESSION_PACKET_SENT, | |
| 201 base::Bind(&NetLogQuicPacketSentCallback, sequence_number, level, | |
| 202 packet.length(), rv)); | |
| 203 } | |
| 204 | |
| 140 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, | 205 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, |
| 141 const IPEndPoint& peer_address, | 206 const IPEndPoint& peer_address, |
| 142 const QuicEncryptedPacket& packet) { | 207 const QuicEncryptedPacket& packet) { |
| 143 net_log_.AddEvent( | 208 net_log_.AddEvent( |
| 144 NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, | 209 NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, |
| 145 base::Bind(&NetLogQuicPacketCallback, &self_address, &peer_address, | 210 base::Bind(&NetLogQuicPacketCallback, &self_address, &peer_address, |
| 146 packet.length())); | 211 packet.length())); |
| 147 } | 212 } |
| 148 | 213 |
| 149 void QuicConnectionLogger::OnProtocolVersionMismatch(QuicTag received_version) { | 214 void QuicConnectionLogger::OnProtocolVersionMismatch(QuicTag received_version) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 195 void QuicConnectionLogger::OnVersionNegotiationPacket( | 260 void QuicConnectionLogger::OnVersionNegotiationPacket( |
| 196 const QuicVersionNegotiationPacket& packet) { | 261 const QuicVersionNegotiationPacket& packet) { |
| 197 } | 262 } |
| 198 | 263 |
| 199 void QuicConnectionLogger::OnRevivedPacket( | 264 void QuicConnectionLogger::OnRevivedPacket( |
| 200 const QuicPacketHeader& revived_header, | 265 const QuicPacketHeader& revived_header, |
| 201 base::StringPiece payload) { | 266 base::StringPiece payload) { |
| 202 } | 267 } |
| 203 | 268 |
| 204 } // namespace net | 269 } // namespace net |
| OLD | NEW |