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 base::Value* NetLogQuicPacketCallback(const IPEndPoint* self_address, | 17 base::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 base::DictionaryValue* dict = new base::DictionaryValue(); | 21 base::DictionaryValue* dict = new base::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 base::Value* NetLogQuicPacketSentCallback( |
| 29 QuicPacketSequenceNumber sequence_number, |
| 30 EncryptionLevel level, |
| 31 size_t packet_size, |
| 32 int rv, |
| 33 NetLog::LogLevel /* log_level */) { |
| 34 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 35 dict->SetInteger("encryption_level", level); |
| 36 dict->SetString("packet_sequence_number", |
| 37 base::Uint64ToString(sequence_number)); |
| 38 dict->SetInteger("size", packet_size); |
| 39 if (rv < 0) { |
| 40 dict->SetInteger("net_error", rv); |
| 41 } |
| 42 return dict; |
| 43 } |
| 44 |
28 base::Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, | 45 base::Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, |
29 NetLog::LogLevel /* log_level */) { | 46 NetLog::LogLevel /* log_level */) { |
30 base::DictionaryValue* dict = new base::DictionaryValue(); | 47 base::DictionaryValue* dict = new base::DictionaryValue(); |
31 dict->SetString("guid", | 48 dict->SetString("guid", |
32 base::Uint64ToString(header->public_header.guid)); | 49 base::Uint64ToString(header->public_header.guid)); |
33 dict->SetInteger("reset_flag", header->public_header.reset_flag); | 50 dict->SetInteger("reset_flag", header->public_header.reset_flag); |
34 dict->SetInteger("version_flag", header->public_header.version_flag); | 51 dict->SetInteger("version_flag", header->public_header.version_flag); |
35 dict->SetString("packet_sequence_number", | 52 dict->SetString("packet_sequence_number", |
36 base::Uint64ToString(header->packet_sequence_number)); | 53 base::Uint64ToString(header->packet_sequence_number)); |
37 dict->SetInteger("entropy_flag", header->entropy_flag); | 54 dict->SetInteger("entropy_flag", header->entropy_flag); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 | 147 |
131 } // namespace | 148 } // namespace |
132 | 149 |
133 QuicConnectionLogger::QuicConnectionLogger(const BoundNetLog& net_log) | 150 QuicConnectionLogger::QuicConnectionLogger(const BoundNetLog& net_log) |
134 : net_log_(net_log) { | 151 : net_log_(net_log) { |
135 } | 152 } |
136 | 153 |
137 QuicConnectionLogger::~QuicConnectionLogger() { | 154 QuicConnectionLogger::~QuicConnectionLogger() { |
138 } | 155 } |
139 | 156 |
140 // QuicConnectionDebugVisitorInterface | 157 void QuicConnectionLogger::OnFrameAddedToPacket(const QuicFrame& frame) { |
| 158 switch (frame.type) { |
| 159 case PADDING_FRAME: |
| 160 break; |
| 161 case STREAM_FRAME: |
| 162 net_log_.AddEvent( |
| 163 NetLog::TYPE_QUIC_SESSION_STREAM_FRAME_SENT, |
| 164 base::Bind(&NetLogQuicStreamFrameCallback, frame.stream_frame)); |
| 165 break; |
| 166 case ACK_FRAME: |
| 167 net_log_.AddEvent( |
| 168 NetLog::TYPE_QUIC_SESSION_ACK_FRAME_SENT, |
| 169 base::Bind(&NetLogQuicAckFrameCallback, frame.ack_frame)); |
| 170 break; |
| 171 case CONGESTION_FEEDBACK_FRAME: |
| 172 net_log_.AddEvent( |
| 173 NetLog::TYPE_QUIC_SESSION_CONGESTION_FEEDBACK_FRAME_SENT, |
| 174 base::Bind(&NetLogQuicCongestionFeedbackFrameCallback, |
| 175 frame.congestion_feedback_frame)); |
| 176 break; |
| 177 case RST_STREAM_FRAME: |
| 178 net_log_.AddEvent( |
| 179 NetLog::TYPE_QUIC_SESSION_RST_STREAM_FRAME_SENT, |
| 180 base::Bind(&NetLogQuicRstStreamFrameCallback, |
| 181 frame.rst_stream_frame)); |
| 182 break; |
| 183 case CONNECTION_CLOSE_FRAME: |
| 184 net_log_.AddEvent( |
| 185 NetLog::TYPE_QUIC_SESSION_CONNECTION_CLOSE_FRAME_SENT, |
| 186 base::Bind(&NetLogQuicConnectionCloseFrameCallback, |
| 187 frame.connection_close_frame)); |
| 188 break; |
| 189 case GOAWAY_FRAME: |
| 190 break; |
| 191 default: |
| 192 DCHECK(false) << "Illegal frame type: " << frame.type; |
| 193 } |
| 194 } |
| 195 |
| 196 void QuicConnectionLogger::OnPacketSent( |
| 197 QuicPacketSequenceNumber sequence_number, |
| 198 EncryptionLevel level, |
| 199 const QuicEncryptedPacket& packet, |
| 200 int rv) { |
| 201 net_log_.AddEvent( |
| 202 NetLog::TYPE_QUIC_SESSION_PACKET_SENT, |
| 203 base::Bind(&NetLogQuicPacketSentCallback, sequence_number, level, |
| 204 packet.length(), rv)); |
| 205 } |
| 206 |
141 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, | 207 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, |
142 const IPEndPoint& peer_address, | 208 const IPEndPoint& peer_address, |
143 const QuicEncryptedPacket& packet) { | 209 const QuicEncryptedPacket& packet) { |
144 net_log_.AddEvent( | 210 net_log_.AddEvent( |
145 NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, | 211 NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, |
146 base::Bind(&NetLogQuicPacketCallback, &self_address, &peer_address, | 212 base::Bind(&NetLogQuicPacketCallback, &self_address, &peer_address, |
147 packet.length())); | 213 packet.length())); |
148 } | 214 } |
149 | 215 |
150 void QuicConnectionLogger::OnProtocolVersionMismatch(QuicTag received_version) { | 216 void QuicConnectionLogger::OnProtocolVersionMismatch(QuicTag received_version) { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 void QuicConnectionLogger::OnVersionNegotiationPacket( | 262 void QuicConnectionLogger::OnVersionNegotiationPacket( |
197 const QuicVersionNegotiationPacket& packet) { | 263 const QuicVersionNegotiationPacket& packet) { |
198 } | 264 } |
199 | 265 |
200 void QuicConnectionLogger::OnRevivedPacket( | 266 void QuicConnectionLogger::OnRevivedPacket( |
201 const QuicPacketHeader& revived_header, | 267 const QuicPacketHeader& revived_header, |
202 base::StringPiece payload) { | 268 base::StringPiece payload) { |
203 } | 269 } |
204 | 270 |
205 } // namespace net | 271 } // namespace net |
OLD | NEW |