| Index: net/quic/quic_connection_logger.cc
|
| diff --git a/net/quic/quic_connection_logger.cc b/net/quic/quic_connection_logger.cc
|
| index 3f329bbb9ca7f194b70003cbdeb95f593156b7f8..f22e014e21064f8d266ebe9aa29136affafd1126 100644
|
| --- a/net/quic/quic_connection_logger.cc
|
| +++ b/net/quic/quic_connection_logger.cc
|
| @@ -502,6 +502,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_;
|
| @@ -527,6 +530,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);
|
| + const uint64_t diff =
|
| + largest_received_packet_number_ - previous_largest_received_packet_number;
|
| +
|
| + uint64_t num_packets_lost = 0;
|
| + uint64_t num_packets_received_in_order = 0;
|
| + uint64_t num_packets_received_not_in_order = 0;
|
| +
|
| + if (socket_performance_watcher_) {
|
| + if (diff == 0) {
|
| + // The received packet number has alower sequence number than the expected
|
| + // sequence number.
|
| + num_packets_received_not_in_order = 1;
|
| + } else if (diff == 1) {
|
| + // The received packet number has the same sequence number as the expected
|
| + // sequence number.
|
| + num_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.
|
| + num_packets_lost = diff - 1;
|
| + num_packets_received_in_order = 1;
|
| + }
|
| + socket_performance_watcher_->OnUpdatedPacketCountAvailable(
|
| + num_packets_lost, num_packets_received_in_order,
|
| + num_packets_received_not_in_order);
|
| + }
|
| }
|
|
|
| void QuicConnectionLogger::OnStreamFrame(const QuicStreamFrame& frame) {
|
| @@ -774,8 +811,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 {
|
|
|