#ifndef QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_
#define QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_

#include <cstddef>
#include <memory>

#include "absl/container/inlined_vector.h"
#include "quiche/balsa/balsa_headers.h"
#include "quiche/common/platform/api/quiche_export.h"

namespace quiche {

// Represents a sequence of BalsaHeaders. The sequence owns each BalsaHeaders,
// and the user asks for pointers to successive BalsaHeaders in the sequence.
class QUICHE_EXPORT BalsaHeadersSequence {
 public:
  // Appends `headers` to the end of the sequence.
  void Append(std::unique_ptr<BalsaHeaders> headers);

  // Returns true if there is a BalsaHeaders that has not yet been returned from
  // `Next()`. IFF true, `Next()` will return non-nullptr.
  bool HasNext() const;

  // Returns a non-owning pointer to the next BalsaHeaders in the sequence, or
  // nullptr if the next does not exist.
  BalsaHeaders* Next();

  // Similar to `Next()` but does not advance the sequence.
  // TODO(b/68801833): Consider removing after full refactoring is in place.
  BalsaHeaders* PeekNext();

  // Clears the sequence. Any previously returned BalsaHeaders become invalid.
  void Clear();

 private:
  // Typically at most two interim responses: an optional 100 Continue and an
  // optional 103 Early Hints.
  absl::InlinedVector<std::unique_ptr<BalsaHeaders>, 2> sequence_;

  // The index of the next entry in the sequence.
  size_t next_ = 0;
};

}  // namespace quiche

#endif  // QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_
