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 <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 dict->SetInteger("stream_id", frame->stream_id); | 95 dict->SetInteger("stream_id", frame->stream_id); |
96 dict->SetBoolean("fin", frame->fin); | 96 dict->SetBoolean("fin", frame->fin); |
97 dict->SetString("offset", base::Uint64ToString(frame->offset)); | 97 dict->SetString("offset", base::Uint64ToString(frame->offset)); |
98 dict->SetInteger("length", frame->data.TotalBufferSize()); | 98 dict->SetInteger("length", frame->data.TotalBufferSize()); |
99 return dict; | 99 return dict; |
100 } | 100 } |
101 | 101 |
102 base::Value* NetLogQuicAckFrameCallback(const QuicAckFrame* frame, | 102 base::Value* NetLogQuicAckFrameCallback(const QuicAckFrame* frame, |
103 NetLog::LogLevel /* log_level */) { | 103 NetLog::LogLevel /* log_level */) { |
104 base::DictionaryValue* dict = new base::DictionaryValue(); | 104 base::DictionaryValue* dict = new base::DictionaryValue(); |
105 base::DictionaryValue* received_info = new base::DictionaryValue(); | 105 dict->SetString("largest_observed", |
106 dict->Set("received_info", received_info); | 106 base::Uint64ToString(frame->largest_observed)); |
107 received_info->SetString( | 107 dict->SetBoolean("truncated", frame->is_truncated); |
108 "largest_observed", | |
109 base::Uint64ToString(frame->received_info.largest_observed)); | |
110 received_info->SetBoolean("truncated", frame->received_info.is_truncated); | |
111 base::ListValue* missing = new base::ListValue(); | 108 base::ListValue* missing = new base::ListValue(); |
112 received_info->Set("missing_packets", missing); | 109 dict->Set("missing_packets", missing); |
113 const SequenceNumberSet& missing_packets = | 110 const SequenceNumberSet& missing_packets = frame->missing_packets; |
114 frame->received_info.missing_packets; | |
115 for (SequenceNumberSet::const_iterator it = missing_packets.begin(); | 111 for (SequenceNumberSet::const_iterator it = missing_packets.begin(); |
116 it != missing_packets.end(); ++it) { | 112 it != missing_packets.end(); ++it) { |
117 missing->AppendString(base::Uint64ToString(*it)); | 113 missing->AppendString(base::Uint64ToString(*it)); |
118 } | 114 } |
119 return dict; | 115 return dict; |
120 } | 116 } |
121 | 117 |
122 base::Value* NetLogQuicCongestionFeedbackFrameCallback( | 118 base::Value* NetLogQuicCongestionFeedbackFrameCallback( |
123 const QuicCongestionFeedbackFrame* frame, | 119 const QuicCongestionFeedbackFrame* frame, |
124 NetLog::LogLevel /* log_level */) { | 120 NetLog::LogLevel /* log_level */) { |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 break; | 348 break; |
353 case STREAM_FRAME: | 349 case STREAM_FRAME: |
354 net_log_.AddEvent( | 350 net_log_.AddEvent( |
355 NetLog::TYPE_QUIC_SESSION_STREAM_FRAME_SENT, | 351 NetLog::TYPE_QUIC_SESSION_STREAM_FRAME_SENT, |
356 base::Bind(&NetLogQuicStreamFrameCallback, frame.stream_frame)); | 352 base::Bind(&NetLogQuicStreamFrameCallback, frame.stream_frame)); |
357 break; | 353 break; |
358 case ACK_FRAME: | 354 case ACK_FRAME: |
359 net_log_.AddEvent( | 355 net_log_.AddEvent( |
360 NetLog::TYPE_QUIC_SESSION_ACK_FRAME_SENT, | 356 NetLog::TYPE_QUIC_SESSION_ACK_FRAME_SENT, |
361 base::Bind(&NetLogQuicAckFrameCallback, frame.ack_frame)); | 357 base::Bind(&NetLogQuicAckFrameCallback, frame.ack_frame)); |
362 if (frame.ack_frame->received_info.is_truncated) | 358 if (frame.ack_frame->is_truncated) |
363 ++num_truncated_acks_sent_; | 359 ++num_truncated_acks_sent_; |
364 break; | 360 break; |
365 case CONGESTION_FEEDBACK_FRAME: | 361 case CONGESTION_FEEDBACK_FRAME: |
366 net_log_.AddEvent( | 362 net_log_.AddEvent( |
367 NetLog::TYPE_QUIC_SESSION_CONGESTION_FEEDBACK_FRAME_SENT, | 363 NetLog::TYPE_QUIC_SESSION_CONGESTION_FEEDBACK_FRAME_SENT, |
368 base::Bind(&NetLogQuicCongestionFeedbackFrameCallback, | 364 base::Bind(&NetLogQuicCongestionFeedbackFrameCallback, |
369 frame.congestion_feedback_frame)); | 365 frame.congestion_feedback_frame)); |
370 break; | 366 break; |
371 case RST_STREAM_FRAME: | 367 case RST_STREAM_FRAME: |
372 UMA_HISTOGRAM_SPARSE_SLOWLY("Net.QuicSession.RstStreamErrorCodeClient", | 368 UMA_HISTOGRAM_SPARSE_SLOWLY("Net.QuicSession.RstStreamErrorCodeClient", |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 void QuicConnectionLogger::OnAckFrame(const QuicAckFrame& frame) { | 491 void QuicConnectionLogger::OnAckFrame(const QuicAckFrame& frame) { |
496 net_log_.AddEvent( | 492 net_log_.AddEvent( |
497 NetLog::TYPE_QUIC_SESSION_ACK_FRAME_RECEIVED, | 493 NetLog::TYPE_QUIC_SESSION_ACK_FRAME_RECEIVED, |
498 base::Bind(&NetLogQuicAckFrameCallback, &frame)); | 494 base::Bind(&NetLogQuicAckFrameCallback, &frame)); |
499 | 495 |
500 const size_t kApproximateLargestSoloAckBytes = 100; | 496 const size_t kApproximateLargestSoloAckBytes = 100; |
501 if (last_received_packet_sequence_number_ < received_acks_.size() && | 497 if (last_received_packet_sequence_number_ < received_acks_.size() && |
502 last_received_packet_size_ < kApproximateLargestSoloAckBytes) | 498 last_received_packet_size_ < kApproximateLargestSoloAckBytes) |
503 received_acks_[last_received_packet_sequence_number_] = true; | 499 received_acks_[last_received_packet_sequence_number_] = true; |
504 | 500 |
505 if (frame.received_info.is_truncated) | 501 if (frame.is_truncated) |
506 ++num_truncated_acks_received_; | 502 ++num_truncated_acks_received_; |
507 | 503 |
508 if (frame.received_info.missing_packets.empty()) | 504 if (frame.missing_packets.empty()) |
509 return; | 505 return; |
510 | 506 |
511 SequenceNumberSet missing_packets = frame.received_info.missing_packets; | 507 SequenceNumberSet missing_packets = frame.missing_packets; |
512 SequenceNumberSet::const_iterator it = missing_packets.lower_bound( | 508 SequenceNumberSet::const_iterator it = missing_packets.lower_bound( |
513 largest_received_missing_packet_sequence_number_); | 509 largest_received_missing_packet_sequence_number_); |
514 if (it == missing_packets.end()) | 510 if (it == missing_packets.end()) |
515 return; | 511 return; |
516 | 512 |
517 if (*it == largest_received_missing_packet_sequence_number_) { | 513 if (*it == largest_received_missing_packet_sequence_number_) { |
518 ++it; | 514 ++it; |
519 if (it == missing_packets.end()) | 515 if (it == missing_packets.end()) |
520 return; | 516 return; |
521 } | 517 } |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 continue; | 815 continue; |
820 } | 816 } |
821 // Record some overlapping patterns, to get a better picture, since this is | 817 // Record some overlapping patterns, to get a better picture, since this is |
822 // not very expensive. | 818 // not very expensive. |
823 if (i % 3 == 0) | 819 if (i % 3 == 0) |
824 six_packet_histogram->Add(recent_6_mask); | 820 six_packet_histogram->Add(recent_6_mask); |
825 } | 821 } |
826 } | 822 } |
827 | 823 |
828 } // namespace net | 824 } // namespace net |
OLD | NEW |