| Index: net/quic/quic_connection_logger.cc
|
| diff --git a/net/quic/quic_connection_logger.cc b/net/quic/quic_connection_logger.cc
|
| index 96c6425d1620b7a379cc1f8b69126682ce979da2..f3858e20260aae0d41a33599fe025d6f212cdf74 100644
|
| --- a/net/quic/quic_connection_logger.cc
|
| +++ b/net/quic/quic_connection_logger.cc
|
| @@ -503,6 +503,9 @@ void QuicConnectionLogger::OnProtocolVersionMismatch(
|
| void QuicConnectionLogger::OnPacketHeader(const QuicPacketHeader& header) {
|
| net_log_.AddEvent(NetLog::TYPE_QUIC_SESSION_PACKET_AUTHENTICATED);
|
| ++num_packets_received_;
|
| +
|
| + const QuicPacketCount previous_largest_received_packet_number =
|
| + largest_received_packet_number_;
|
| if (largest_received_packet_number_ < header.packet_number) {
|
| QuicPacketNumber delta =
|
| header.packet_number - largest_received_packet_number_;
|
| @@ -528,6 +531,40 @@ void QuicConnectionLogger::OnPacketHeader(const QuicPacketHeader& header) {
|
| header.packet_number));
|
| }
|
| last_received_packet_number_ = header.packet_number;
|
| + ReportPacketCounts(previous_largest_received_packet_number);
|
| +}
|
| +
|
| +void QuicConnectionLogger::ReportPacketCounts(
|
| + QuicPacketCount previous_largest_received_packet_number) const {
|
| + DCHECK_GE(largest_received_packet_number_,
|
| + previous_largest_received_packet_number);
|
| + if (!socket_performance_watcher_)
|
| + return;
|
| +
|
| + size_t packets_lost = 0;
|
| + size_t packets_received_in_order = 0;
|
| + size_t packets_received_out_of_order = 0;
|
| +
|
| + const size_t diff =
|
| + largest_received_packet_number_ - previous_largest_received_packet_number;
|
| +
|
| + if (diff == 0) {
|
| + // The received packet number has a lower sequence number than the expected
|
| + // sequence number.
|
| + packets_received_out_of_order = 1;
|
| + } else if (diff == 1) {
|
| + // The received packet number has the same sequence number as the expected
|
| + // sequence number.
|
| + packets_received_in_order = 1;
|
| + } else {
|
| + // The received packet number has higher sequence number as the expected
|
| + // sequence number. Report all packets with intermediate sequence numbers
|
| + // as lost.
|
| + packets_lost = diff - 1;
|
| + packets_received_in_order = 1;
|
| + }
|
| + socket_performance_watcher_->OnUpdatedPacketCountAvailable(
|
| + packets_lost, packets_received_in_order, packets_received_out_of_order);
|
| }
|
|
|
| void QuicConnectionLogger::OnStreamFrame(const QuicStreamFrame& frame) {
|
| @@ -775,8 +812,8 @@ void QuicConnectionLogger::AddTo21CumulativeHistogram(
|
| float QuicConnectionLogger::ReceivedPacketLossRate() const {
|
| if (largest_received_packet_number_ <= num_packets_received_)
|
| return 0.0f;
|
| - float num_received = largest_received_packet_number_ - num_packets_received_;
|
| - return num_received / largest_received_packet_number_;
|
| + float num_lost = largest_received_packet_number_ - num_packets_received_;
|
| + return num_lost / largest_received_packet_number_;
|
| }
|
|
|
| void QuicConnectionLogger::OnRttChanged(QuicTime::Delta rtt) const {
|
|
|