// Copyright (c) 2016 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.

#ifndef QUICHE_QUIC_CORE_FRAMES_QUIC_PADDING_FRAME_H_
#define QUICHE_QUIC_CORE_FRAMES_QUIC_PADDING_FRAME_H_

#include <cstdint>
#include <ostream>

#include "quic/core/frames/quic_inlined_frame.h"
#include "quic/core/quic_types.h"
#include "quic/platform/api/quic_export.h"

namespace quic {

// A padding frame contains no payload.
struct QUIC_EXPORT_PRIVATE QuicPaddingFrame
    : public QuicInlinedFrame<QuicPaddingFrame> {
  QuicPaddingFrame() : QuicInlinedFrame(PADDING_FRAME) {}
  explicit QuicPaddingFrame(int num_padding_bytes)
      : QuicInlinedFrame(PADDING_FRAME), num_padding_bytes(num_padding_bytes) {}

  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
      std::ostream& os,
      const QuicPaddingFrame& padding_frame);

  QuicFrameType type;

  // -1: full padding to the end of a max-sized packet
  // otherwise: only pad up to num_padding_bytes bytes
  int num_padding_bytes = -1;
};

}  // namespace quic

#endif  // QUICHE_QUIC_CORE_FRAMES_QUIC_PADDING_FRAME_H_
