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 29 matching lines...) Expand all Loading... |
40 NetLog::LogLevel /* log_level */) { | 40 NetLog::LogLevel /* log_level */) { |
41 base::DictionaryValue* dict = new base::DictionaryValue(); | 41 base::DictionaryValue* dict = new base::DictionaryValue(); |
42 dict->SetString("self_address", self_address->ToString()); | 42 dict->SetString("self_address", self_address->ToString()); |
43 dict->SetString("peer_address", peer_address->ToString()); | 43 dict->SetString("peer_address", peer_address->ToString()); |
44 dict->SetInteger("size", packet_size); | 44 dict->SetInteger("size", packet_size); |
45 return dict; | 45 return dict; |
46 } | 46 } |
47 | 47 |
48 base::Value* NetLogQuicPacketSentCallback( | 48 base::Value* NetLogQuicPacketSentCallback( |
49 QuicPacketSequenceNumber sequence_number, | 49 QuicPacketSequenceNumber sequence_number, |
| 50 QuicPacketSequenceNumber original_sequence_number, |
50 EncryptionLevel level, | 51 EncryptionLevel level, |
51 TransmissionType transmission_type, | 52 TransmissionType transmission_type, |
52 size_t packet_size, | 53 size_t packet_size, |
53 WriteResult result, | 54 WriteResult result, |
54 NetLog::LogLevel /* log_level */) { | 55 NetLog::LogLevel /* log_level */) { |
55 base::DictionaryValue* dict = new base::DictionaryValue(); | 56 base::DictionaryValue* dict = new base::DictionaryValue(); |
56 dict->SetInteger("encryption_level", level); | 57 dict->SetInteger("encryption_level", level); |
57 dict->SetInteger("transmission_type", transmission_type); | 58 dict->SetInteger("transmission_type", transmission_type); |
58 dict->SetString("packet_sequence_number", | 59 dict->SetString("packet_sequence_number", |
59 base::Uint64ToString(sequence_number)); | 60 base::Uint64ToString(sequence_number)); |
| 61 dict->SetString("original_sequence_number", |
| 62 base::Uint64ToString(original_sequence_number)); |
60 dict->SetInteger("size", packet_size); | 63 dict->SetInteger("size", packet_size); |
61 if (result.status != WRITE_STATUS_OK) { | 64 if (result.status != WRITE_STATUS_OK) { |
62 dict->SetInteger("net_error", result.error_code); | 65 dict->SetInteger("net_error", result.error_code); |
63 } | 66 } |
64 return dict; | 67 return dict; |
65 } | 68 } |
66 | 69 |
67 base::Value* NetLogQuicPacketRetransmittedCallback( | |
68 QuicPacketSequenceNumber old_sequence_number, | |
69 QuicPacketSequenceNumber new_sequence_number, | |
70 NetLog::LogLevel /* log_level */) { | |
71 base::DictionaryValue* dict = new base::DictionaryValue(); | |
72 dict->SetString("old_packet_sequence_number", | |
73 base::Uint64ToString(old_sequence_number)); | |
74 dict->SetString("new_packet_sequence_number", | |
75 base::Uint64ToString(new_sequence_number)); | |
76 return dict; | |
77 } | |
78 | |
79 base::Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, | 70 base::Value* NetLogQuicPacketHeaderCallback(const QuicPacketHeader* header, |
80 NetLog::LogLevel /* log_level */) { | 71 NetLog::LogLevel /* log_level */) { |
81 base::DictionaryValue* dict = new base::DictionaryValue(); | 72 base::DictionaryValue* dict = new base::DictionaryValue(); |
82 dict->SetString("connection_id", | 73 dict->SetString("connection_id", |
83 base::Uint64ToString(header->public_header.connection_id)); | 74 base::Uint64ToString(header->public_header.connection_id)); |
84 dict->SetInteger("reset_flag", header->public_header.reset_flag); | 75 dict->SetInteger("reset_flag", header->public_header.reset_flag); |
85 dict->SetInteger("version_flag", header->public_header.version_flag); | 76 dict->SetInteger("version_flag", header->public_header.version_flag); |
86 dict->SetString("packet_sequence_number", | 77 dict->SetString("packet_sequence_number", |
87 base::Uint64ToString(header->packet_sequence_number)); | 78 base::Uint64ToString(header->packet_sequence_number)); |
88 dict->SetInteger("entropy_flag", header->entropy_flag); | 79 dict->SetInteger("entropy_flag", header->entropy_flag); |
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 // PingFrame has no contents to log, so just record that it was sent. | 457 // PingFrame has no contents to log, so just record that it was sent. |
467 net_log_.AddEvent(NetLog::TYPE_QUIC_SESSION_PING_FRAME_SENT); | 458 net_log_.AddEvent(NetLog::TYPE_QUIC_SESSION_PING_FRAME_SENT); |
468 break; | 459 break; |
469 default: | 460 default: |
470 DCHECK(false) << "Illegal frame type: " << frame.type; | 461 DCHECK(false) << "Illegal frame type: " << frame.type; |
471 } | 462 } |
472 } | 463 } |
473 | 464 |
474 void QuicConnectionLogger::OnPacketSent( | 465 void QuicConnectionLogger::OnPacketSent( |
475 QuicPacketSequenceNumber sequence_number, | 466 QuicPacketSequenceNumber sequence_number, |
| 467 QuicPacketSequenceNumber original_sequence_number, |
476 EncryptionLevel level, | 468 EncryptionLevel level, |
477 TransmissionType transmission_type, | 469 TransmissionType transmission_type, |
478 const QuicEncryptedPacket& packet, | 470 const QuicEncryptedPacket& packet, |
479 WriteResult result) { | 471 WriteResult result) { |
480 net_log_.AddEvent( | 472 net_log_.AddEvent( |
481 NetLog::TYPE_QUIC_SESSION_PACKET_SENT, | 473 NetLog::TYPE_QUIC_SESSION_PACKET_SENT, |
482 base::Bind(&NetLogQuicPacketSentCallback, sequence_number, level, | 474 base::Bind(&NetLogQuicPacketSentCallback, sequence_number, |
483 transmission_type, packet.length(), result)); | 475 original_sequence_number, level, transmission_type, |
484 } | 476 packet.length(), result)); |
485 | |
486 void QuicConnectionLogger:: OnPacketRetransmitted( | |
487 QuicPacketSequenceNumber old_sequence_number, | |
488 QuicPacketSequenceNumber new_sequence_number) { | |
489 net_log_.AddEvent( | |
490 NetLog::TYPE_QUIC_SESSION_PACKET_RETRANSMITTED, | |
491 base::Bind(&NetLogQuicPacketRetransmittedCallback, | |
492 old_sequence_number, new_sequence_number)); | |
493 } | 477 } |
494 | 478 |
495 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, | 479 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, |
496 const IPEndPoint& peer_address, | 480 const IPEndPoint& peer_address, |
497 const QuicEncryptedPacket& packet) { | 481 const QuicEncryptedPacket& packet) { |
498 if (local_address_from_self_.GetFamily() == ADDRESS_FAMILY_UNSPECIFIED) { | 482 if (local_address_from_self_.GetFamily() == ADDRESS_FAMILY_UNSPECIFIED) { |
499 local_address_from_self_ = self_address; | 483 local_address_from_self_ = self_address; |
500 UMA_HISTOGRAM_ENUMERATION("Net.QuicSession.ConnectionTypeFromSelf", | 484 UMA_HISTOGRAM_ENUMERATION("Net.QuicSession.ConnectionTypeFromSelf", |
501 GetRealAddressFamily(self_address.address()), | 485 GetRealAddressFamily(self_address.address()), |
502 ADDRESS_FAMILY_LAST); | 486 ADDRESS_FAMILY_LAST); |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
896 continue; | 880 continue; |
897 } | 881 } |
898 // Record some overlapping patterns, to get a better picture, since this is | 882 // Record some overlapping patterns, to get a better picture, since this is |
899 // not very expensive. | 883 // not very expensive. |
900 if (i % 3 == 0) | 884 if (i % 3 == 0) |
901 six_packet_histogram->Add(recent_6_mask); | 885 six_packet_histogram->Add(recent_6_mask); |
902 } | 886 } |
903 } | 887 } |
904 | 888 |
905 } // namespace net | 889 } // namespace net |
OLD | NEW |