// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/quic/congestion_control/inter_arrival_receiver.h" #include "base/basictypes.h" namespace net { InterArrivalReceiver::InterArrivalReceiver() : accumulated_number_of_recoverd_lost_packets_(0) { } InterArrivalReceiver::~InterArrivalReceiver() { } bool InterArrivalReceiver::GenerateCongestionFeedback( QuicCongestionFeedbackFrame* feedback) { if (received_packet_times_.size() <= 1) { // Don't waste resources by sending a feedback frame for only one packet. return false; } feedback->type = kInterArrival; feedback->inter_arrival.accumulated_number_of_lost_packets = accumulated_number_of_recoverd_lost_packets_; // Copy our current receive set to our feedback message, we will not resend // this data if it is lost. feedback->inter_arrival.received_packet_times = received_packet_times_; // Prepare for the next set of arriving packets by clearing our current set. received_packet_times_.clear(); return true; } void InterArrivalReceiver::RecordIncomingPacket( QuicByteCount /*bytes*/, QuicPacketSequenceNumber sequence_number, QuicTime timestamp, bool revived) { if (revived) { ++accumulated_number_of_recoverd_lost_packets_; } received_packet_times_.insert(std::make_pair(sequence_number, timestamp)); } } // namespace net