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

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

Issue 1149763005: Change NetLog::ParametersCallback to return a scoped_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format Created 5 years, 7 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
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 <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 17 matching lines...) Expand all
28 28
29 namespace net { 29 namespace net {
30 30
31 namespace { 31 namespace {
32 32
33 // We have ranges-of-buckets in the cumulative histogram (covering 21 packet 33 // We have ranges-of-buckets in the cumulative histogram (covering 21 packet
34 // sequences) of length 2, 3, 4, ... 22. 34 // sequences) of length 2, 3, 4, ... 22.
35 // Hence the largest sample is bounded by the sum of those numbers. 35 // Hence the largest sample is bounded by the sum of those numbers.
36 const int kBoundingSampleInCumulativeHistogram = ((2 + 22) * 21) / 2; 36 const int kBoundingSampleInCumulativeHistogram = ((2 + 22) * 21) / 2;
37 37
38 base::Value* NetLogQuicPacketCallback(const IPEndPoint* self_address, 38 scoped_ptr<base::Value> NetLogQuicPacketCallback(
39 const IPEndPoint* peer_address, 39 const IPEndPoint* self_address,
40 size_t packet_size, 40 const IPEndPoint* peer_address,
41 NetLogCaptureMode /* capture_mode */) { 41 size_t packet_size,
42 base::DictionaryValue* dict = new base::DictionaryValue(); 42 NetLogCaptureMode /* capture_mode */) {
43 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
43 dict->SetString("self_address", self_address->ToString()); 44 dict->SetString("self_address", self_address->ToString());
44 dict->SetString("peer_address", peer_address->ToString()); 45 dict->SetString("peer_address", peer_address->ToString());
45 dict->SetInteger("size", packet_size); 46 dict->SetInteger("size", packet_size);
46 return dict; 47 return dict.Pass();
47 } 48 }
48 49
49 base::Value* NetLogQuicPacketSentCallback( 50 scoped_ptr<base::Value> NetLogQuicPacketSentCallback(
50 const SerializedPacket& serialized_packet, 51 const SerializedPacket& serialized_packet,
51 EncryptionLevel level, 52 EncryptionLevel level,
52 TransmissionType transmission_type, 53 TransmissionType transmission_type,
53 size_t packet_size, 54 size_t packet_size,
54 QuicTime sent_time, 55 QuicTime sent_time,
55 NetLogCaptureMode /* capture_mode */) { 56 NetLogCaptureMode /* capture_mode */) {
56 base::DictionaryValue* dict = new base::DictionaryValue(); 57 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
57 dict->SetInteger("encryption_level", level); 58 dict->SetInteger("encryption_level", level);
58 dict->SetInteger("transmission_type", transmission_type); 59 dict->SetInteger("transmission_type", transmission_type);
59 dict->SetString("packet_sequence_number", 60 dict->SetString("packet_sequence_number",
60 base::Uint64ToString(serialized_packet.sequence_number)); 61 base::Uint64ToString(serialized_packet.sequence_number));
61 dict->SetInteger("size", packet_size); 62 dict->SetInteger("size", packet_size);
62 dict->SetInteger("sent_time_us", 63 dict->SetInteger("sent_time_us",
63 static_cast<int>(sent_time.ToDebuggingValue())); 64 static_cast<int>(sent_time.ToDebuggingValue()));
64 return dict; 65 return dict.Pass();
65 } 66 }
66 67
67 base::Value* NetLogQuicPacketRetransmittedCallback( 68 scoped_ptr<base::Value> NetLogQuicPacketRetransmittedCallback(
68 QuicPacketSequenceNumber old_sequence_number, 69 QuicPacketSequenceNumber old_sequence_number,
69 QuicPacketSequenceNumber new_sequence_number, 70 QuicPacketSequenceNumber new_sequence_number,
70 NetLogCaptureMode /* capture_mode */) { 71 NetLogCaptureMode /* capture_mode */) {
71 base::DictionaryValue* dict = new base::DictionaryValue(); 72 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
72 dict->SetString("old_packet_sequence_number", 73 dict->SetString("old_packet_sequence_number",
73 base::Uint64ToString(old_sequence_number)); 74 base::Uint64ToString(old_sequence_number));
74 dict->SetString("new_packet_sequence_number", 75 dict->SetString("new_packet_sequence_number",
75 base::Uint64ToString(new_sequence_number)); 76 base::Uint64ToString(new_sequence_number));
76 return dict; 77 return dict.Pass();
77 } 78 }
78 79
79 base::Value* NetLogQuicPacketHeaderCallback( 80 scoped_ptr<base::Value> NetLogQuicPacketHeaderCallback(
80 const QuicPacketHeader* header, 81 const QuicPacketHeader* header,
81 NetLogCaptureMode /* capture_mode */) { 82 NetLogCaptureMode /* capture_mode */) {
82 base::DictionaryValue* dict = new base::DictionaryValue(); 83 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
83 dict->SetString("connection_id", 84 dict->SetString("connection_id",
84 base::Uint64ToString(header->public_header.connection_id)); 85 base::Uint64ToString(header->public_header.connection_id));
85 dict->SetInteger("reset_flag", header->public_header.reset_flag); 86 dict->SetInteger("reset_flag", header->public_header.reset_flag);
86 dict->SetInteger("version_flag", header->public_header.version_flag); 87 dict->SetInteger("version_flag", header->public_header.version_flag);
87 dict->SetString("packet_sequence_number", 88 dict->SetString("packet_sequence_number",
88 base::Uint64ToString(header->packet_sequence_number)); 89 base::Uint64ToString(header->packet_sequence_number));
89 dict->SetInteger("entropy_flag", header->entropy_flag); 90 dict->SetInteger("entropy_flag", header->entropy_flag);
90 dict->SetInteger("fec_flag", header->fec_flag); 91 dict->SetInteger("fec_flag", header->fec_flag);
91 dict->SetInteger("fec_group", static_cast<int>(header->fec_group)); 92 dict->SetInteger("fec_group", static_cast<int>(header->fec_group));
92 return dict; 93 return dict.Pass();
93 } 94 }
94 95
95 base::Value* NetLogQuicStreamFrameCallback( 96 scoped_ptr<base::Value> NetLogQuicStreamFrameCallback(
96 const QuicStreamFrame* frame, 97 const QuicStreamFrame* frame,
97 NetLogCaptureMode /* capture_mode */) { 98 NetLogCaptureMode /* capture_mode */) {
98 base::DictionaryValue* dict = new base::DictionaryValue(); 99 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
99 dict->SetInteger("stream_id", frame->stream_id); 100 dict->SetInteger("stream_id", frame->stream_id);
100 dict->SetBoolean("fin", frame->fin); 101 dict->SetBoolean("fin", frame->fin);
101 dict->SetString("offset", base::Uint64ToString(frame->offset)); 102 dict->SetString("offset", base::Uint64ToString(frame->offset));
102 dict->SetInteger("length", frame->data.TotalBufferSize()); 103 dict->SetInteger("length", frame->data.TotalBufferSize());
103 return dict; 104 return dict.Pass();
104 } 105 }
105 106
106 base::Value* NetLogQuicAckFrameCallback(const QuicAckFrame* frame, 107 scoped_ptr<base::Value> NetLogQuicAckFrameCallback(
107 NetLogCaptureMode /* capture_mode */) { 108 const QuicAckFrame* frame,
108 base::DictionaryValue* dict = new base::DictionaryValue(); 109 NetLogCaptureMode /* capture_mode */) {
110 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
109 dict->SetString("largest_observed", 111 dict->SetString("largest_observed",
110 base::Uint64ToString(frame->largest_observed)); 112 base::Uint64ToString(frame->largest_observed));
111 dict->SetInteger( 113 dict->SetInteger(
112 "delta_time_largest_observed_us", 114 "delta_time_largest_observed_us",
113 static_cast<int>(frame->delta_time_largest_observed.ToMicroseconds())); 115 static_cast<int>(frame->delta_time_largest_observed.ToMicroseconds()));
114 dict->SetInteger("entropy_hash", 116 dict->SetInteger("entropy_hash",
115 frame->entropy_hash); 117 frame->entropy_hash);
116 dict->SetBoolean("truncated", frame->is_truncated); 118 dict->SetBoolean("truncated", frame->is_truncated);
117 119
118 base::ListValue* missing = new base::ListValue(); 120 base::ListValue* missing = new base::ListValue();
(...skipping 17 matching lines...) Expand all
136 const PacketTimeList& received_times = frame->received_packet_times; 138 const PacketTimeList& received_times = frame->received_packet_times;
137 for (PacketTimeList::const_iterator it = received_times.begin(); 139 for (PacketTimeList::const_iterator it = received_times.begin();
138 it != received_times.end(); ++it) { 140 it != received_times.end(); ++it) {
139 base::DictionaryValue* info = new base::DictionaryValue(); 141 base::DictionaryValue* info = new base::DictionaryValue();
140 info->SetInteger("sequence_number", static_cast<int>(it->first)); 142 info->SetInteger("sequence_number", static_cast<int>(it->first));
141 info->SetInteger("received", 143 info->SetInteger("received",
142 static_cast<int>(it->second.ToDebuggingValue())); 144 static_cast<int>(it->second.ToDebuggingValue()));
143 received->Append(info); 145 received->Append(info);
144 } 146 }
145 147
146 return dict; 148 return dict.Pass();
147 } 149 }
148 150
149 base::Value* NetLogQuicRstStreamFrameCallback( 151 scoped_ptr<base::Value> NetLogQuicRstStreamFrameCallback(
150 const QuicRstStreamFrame* frame, 152 const QuicRstStreamFrame* frame,
151 NetLogCaptureMode /* capture_mode */) { 153 NetLogCaptureMode /* capture_mode */) {
152 base::DictionaryValue* dict = new base::DictionaryValue(); 154 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
153 dict->SetInteger("stream_id", frame->stream_id); 155 dict->SetInteger("stream_id", frame->stream_id);
154 dict->SetInteger("quic_rst_stream_error", frame->error_code); 156 dict->SetInteger("quic_rst_stream_error", frame->error_code);
155 dict->SetString("details", frame->error_details); 157 dict->SetString("details", frame->error_details);
156 return dict; 158 return dict.Pass();
157 } 159 }
158 160
159 base::Value* NetLogQuicConnectionCloseFrameCallback( 161 scoped_ptr<base::Value> NetLogQuicConnectionCloseFrameCallback(
160 const QuicConnectionCloseFrame* frame, 162 const QuicConnectionCloseFrame* frame,
161 NetLogCaptureMode /* capture_mode */) { 163 NetLogCaptureMode /* capture_mode */) {
162 base::DictionaryValue* dict = new base::DictionaryValue(); 164 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
163 dict->SetInteger("quic_error", frame->error_code); 165 dict->SetInteger("quic_error", frame->error_code);
164 dict->SetString("details", frame->error_details); 166 dict->SetString("details", frame->error_details);
165 return dict; 167 return dict.Pass();
166 } 168 }
167 169
168 base::Value* NetLogQuicWindowUpdateFrameCallback( 170 scoped_ptr<base::Value> NetLogQuicWindowUpdateFrameCallback(
169 const QuicWindowUpdateFrame* frame, 171 const QuicWindowUpdateFrame* frame,
170 NetLogCaptureMode /* capture_mode */) { 172 NetLogCaptureMode /* capture_mode */) {
171 base::DictionaryValue* dict = new base::DictionaryValue(); 173 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
172 dict->SetInteger("stream_id", frame->stream_id); 174 dict->SetInteger("stream_id", frame->stream_id);
173 dict->SetString("byte_offset", base::Uint64ToString(frame->byte_offset)); 175 dict->SetString("byte_offset", base::Uint64ToString(frame->byte_offset));
174 return dict; 176 return dict.Pass();
175 } 177 }
176 178
177 base::Value* NetLogQuicBlockedFrameCallback( 179 scoped_ptr<base::Value> NetLogQuicBlockedFrameCallback(
178 const QuicBlockedFrame* frame, 180 const QuicBlockedFrame* frame,
179 NetLogCaptureMode /* capture_mode */) { 181 NetLogCaptureMode /* capture_mode */) {
180 base::DictionaryValue* dict = new base::DictionaryValue(); 182 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
181 dict->SetInteger("stream_id", frame->stream_id); 183 dict->SetInteger("stream_id", frame->stream_id);
182 return dict; 184 return dict.Pass();
183 } 185 }
184 186
185 base::Value* NetLogQuicGoAwayFrameCallback( 187 scoped_ptr<base::Value> NetLogQuicGoAwayFrameCallback(
186 const QuicGoAwayFrame* frame, 188 const QuicGoAwayFrame* frame,
187 NetLogCaptureMode /* capture_mode */) { 189 NetLogCaptureMode /* capture_mode */) {
188 base::DictionaryValue* dict = new base::DictionaryValue(); 190 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
189 dict->SetInteger("quic_error", frame->error_code); 191 dict->SetInteger("quic_error", frame->error_code);
190 dict->SetInteger("last_good_stream_id", frame->last_good_stream_id); 192 dict->SetInteger("last_good_stream_id", frame->last_good_stream_id);
191 dict->SetString("reason_phrase", frame->reason_phrase); 193 dict->SetString("reason_phrase", frame->reason_phrase);
192 return dict; 194 return dict.Pass();
193 } 195 }
194 196
195 base::Value* NetLogQuicStopWaitingFrameCallback( 197 scoped_ptr<base::Value> NetLogQuicStopWaitingFrameCallback(
196 const QuicStopWaitingFrame* frame, 198 const QuicStopWaitingFrame* frame,
197 NetLogCaptureMode /* capture_mode */) { 199 NetLogCaptureMode /* capture_mode */) {
198 base::DictionaryValue* dict = new base::DictionaryValue(); 200 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
199 base::DictionaryValue* sent_info = new base::DictionaryValue(); 201 base::DictionaryValue* sent_info = new base::DictionaryValue();
200 dict->Set("sent_info", sent_info); 202 dict->Set("sent_info", sent_info);
201 sent_info->SetString("least_unacked", 203 sent_info->SetString("least_unacked",
202 base::Uint64ToString(frame->least_unacked)); 204 base::Uint64ToString(frame->least_unacked));
203 return dict; 205 return dict.Pass();
204 } 206 }
205 207
206 base::Value* NetLogQuicVersionNegotiationPacketCallback( 208 scoped_ptr<base::Value> NetLogQuicVersionNegotiationPacketCallback(
207 const QuicVersionNegotiationPacket* packet, 209 const QuicVersionNegotiationPacket* packet,
208 NetLogCaptureMode /* capture_mode */) { 210 NetLogCaptureMode /* capture_mode */) {
209 base::DictionaryValue* dict = new base::DictionaryValue(); 211 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
210 base::ListValue* versions = new base::ListValue(); 212 base::ListValue* versions = new base::ListValue();
211 dict->Set("versions", versions); 213 dict->Set("versions", versions);
212 for (QuicVersionVector::const_iterator it = packet->versions.begin(); 214 for (QuicVersionVector::const_iterator it = packet->versions.begin();
213 it != packet->versions.end(); ++it) { 215 it != packet->versions.end(); ++it) {
214 versions->AppendString(QuicVersionToString(*it)); 216 versions->AppendString(QuicVersionToString(*it));
215 } 217 }
216 return dict; 218 return dict.Pass();
217 } 219 }
218 220
219 base::Value* NetLogQuicCryptoHandshakeMessageCallback( 221 scoped_ptr<base::Value> NetLogQuicCryptoHandshakeMessageCallback(
220 const CryptoHandshakeMessage* message, 222 const CryptoHandshakeMessage* message,
221 NetLogCaptureMode /* capture_mode */) { 223 NetLogCaptureMode /* capture_mode */) {
222 base::DictionaryValue* dict = new base::DictionaryValue(); 224 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
223 dict->SetString("quic_crypto_handshake_message", message->DebugString()); 225 dict->SetString("quic_crypto_handshake_message", message->DebugString());
224 return dict; 226 return dict.Pass();
225 } 227 }
226 228
227 base::Value* NetLogQuicOnConnectionClosedCallback( 229 scoped_ptr<base::Value> NetLogQuicOnConnectionClosedCallback(
228 QuicErrorCode error, 230 QuicErrorCode error,
229 bool from_peer, 231 bool from_peer,
230 NetLogCaptureMode /* capture_mode */) { 232 NetLogCaptureMode /* capture_mode */) {
231 base::DictionaryValue* dict = new base::DictionaryValue(); 233 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
232 dict->SetInteger("quic_error", error); 234 dict->SetInteger("quic_error", error);
233 dict->SetBoolean("from_peer", from_peer); 235 dict->SetBoolean("from_peer", from_peer);
234 return dict; 236 return dict.Pass();
235 } 237 }
236 238
237 base::Value* NetLogQuicCertificateVerifiedCallback( 239 scoped_ptr<base::Value> NetLogQuicCertificateVerifiedCallback(
238 scoped_refptr<X509Certificate> cert, 240 scoped_refptr<X509Certificate> cert,
239 NetLogCaptureMode /* capture_mode */) { 241 NetLogCaptureMode /* capture_mode */) {
240 // Only the subjects are logged so that we can investigate connection pooling. 242 // Only the subjects are logged so that we can investigate connection pooling.
241 // More fields could be logged in the future. 243 // More fields could be logged in the future.
242 std::vector<std::string> dns_names; 244 std::vector<std::string> dns_names;
243 cert->GetDNSNames(&dns_names); 245 cert->GetDNSNames(&dns_names);
244 base::DictionaryValue* dict = new base::DictionaryValue(); 246 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
245 base::ListValue* subjects = new base::ListValue(); 247 base::ListValue* subjects = new base::ListValue();
246 for (std::vector<std::string>::const_iterator it = dns_names.begin(); 248 for (std::vector<std::string>::const_iterator it = dns_names.begin();
247 it != dns_names.end(); it++) { 249 it != dns_names.end(); it++) {
248 subjects->Append(new base::StringValue(*it)); 250 subjects->Append(new base::StringValue(*it));
249 } 251 }
250 dict->Set("subjects", subjects); 252 dict->Set("subjects", subjects);
251 return dict; 253 return dict.Pass();
252 } 254 }
253 255
254 void UpdatePacketGapSentHistogram(size_t num_consecutive_missing_packets) { 256 void UpdatePacketGapSentHistogram(size_t num_consecutive_missing_packets) {
255 UMA_HISTOGRAM_COUNTS("Net.QuicSession.PacketGapSent", 257 UMA_HISTOGRAM_COUNTS("Net.QuicSession.PacketGapSent",
256 num_consecutive_missing_packets); 258 num_consecutive_missing_packets);
257 } 259 }
258 260
259 void UpdatePublicResetAddressMismatchHistogram( 261 void UpdatePublicResetAddressMismatchHistogram(
260 const IPEndPoint& server_hello_address, 262 const IPEndPoint& server_hello_address,
261 const IPEndPoint& public_reset_address) { 263 const IPEndPoint& public_reset_address) {
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 continue; 865 continue;
864 } 866 }
865 // Record some overlapping patterns, to get a better picture, since this is 867 // Record some overlapping patterns, to get a better picture, since this is
866 // not very expensive. 868 // not very expensive.
867 if (i % 3 == 0) 869 if (i % 3 == 0)
868 six_packet_histogram->Add(recent_6_mask); 870 six_packet_histogram->Add(recent_6_mask);
869 } 871 }
870 } 872 }
871 873
872 } // namespace net 874 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698