// Copyright (c) 2012 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.
//
// Fix rate receive side congestion control, used for initial testing.

#ifndef NET_QUIC_CONGESTION_CONTROL_FIX_RATE_RECEIVER_H_
#define NET_QUIC_CONGESTION_CONTROL_FIX_RATE_RECEIVER_H_

#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "net/base/net_export.h"
#include "net/quic/congestion_control/receive_algorithm_interface.h"
#include "net/quic/quic_bandwidth.h"

namespace net {

namespace test {
class FixRateReceiverPeer;
}  // namespace test

class NET_EXPORT_PRIVATE FixRateReceiver : public ReceiveAlgorithmInterface {
 public:
  FixRateReceiver();

  // Implements ReceiveAlgorithmInterface.
  virtual bool GenerateCongestionFeedback(
      QuicCongestionFeedbackFrame* feedback) OVERRIDE;

  // Implements ReceiveAlgorithmInterface.
  virtual void RecordIncomingPacket(QuicByteCount bytes,
                                    QuicPacketSequenceNumber sequence_number,
                                    QuicTime timestamp,
                                    bool recovered) OVERRIDE;
 private:
  friend class test::FixRateReceiverPeer;

  QuicBandwidth configured_rate_;

  DISALLOW_COPY_AND_ASSIGN(FixRateReceiver);
};

}  // namespace net
#endif  // NET_QUIC_CONGESTION_CONTROL_FIX_RATE_RECEIVER_H_
