Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(311)

Side by Side Diff: net/quic/quic_connection_logger.cc

Issue 17518002: Add logging to the QUIC write path. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Missed one Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_connection_logger.h ('k') | net/quic/quic_packet_generator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « net/quic/quic_connection_logger.h ('k') | net/quic/quic_packet_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698