/*
 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef WEBRTC_MODULES_PACING_PACER_H_
#define WEBRTC_MODULES_PACING_PACER_H_

#include "webrtc/modules/include/module.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"

namespace webrtc {
class Pacer : public Module, public RtpPacketSender {
 public:
  virtual void SetEstimatedBitrate(uint32_t bitrate_bps) {}
  virtual void SetEstimatedBitrateAndCongestionWindow(
      uint32_t bitrate_bps,
      bool in_probe_rtt,
      uint64_t congestion_window) {}
  virtual void OnBytesAcked(size_t bytes) {}
  void InsertPacket(RtpPacketSender::Priority priority,
                    uint32_t ssrc,
                    uint16_t sequence_number,
                    int64_t capture_time_ms,
                    size_t bytes,
                    bool retransmission) override = 0;
  int64_t TimeUntilNextProcess() override = 0;
  void Process() override = 0;
  ~Pacer() override {}
};
}  // namespace webrtc
#endif  // WEBRTC_MODULES_PACING_PACER_H_
