// Copyright 2020 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_HTTP2_HPACK_DECODER_HPACK_DECODING_ERROR_H_
#define QUICHE_HTTP2_HPACK_DECODER_HPACK_DECODING_ERROR_H_

#include "absl/strings/string_view.h"
#include "common/platform/api/quiche_export.h"

namespace http2 {

enum class HpackDecodingError {
  // No error detected so far.
  kOk,
  // Varint beyond implementation limit.
  kIndexVarintError,
  kNameLengthVarintError,
  kValueLengthVarintError,
  // String literal length exceeds buffer limit.
  kNameTooLong,
  kValueTooLong,
  // Error in Huffman encoding.
  kNameHuffmanError,
  kValueHuffmanError,
  // Next instruction should have been a dynamic table size update.
  kMissingDynamicTableSizeUpdate,
  // Invalid index in indexed header field representation.
  kInvalidIndex,
  // Invalid index in literal header field with indexed name representation.
  kInvalidNameIndex,
  // Dynamic table size update not allowed.
  kDynamicTableSizeUpdateNotAllowed,
  // Initial dynamic table size update is above low water mark.
  kInitialDynamicTableSizeUpdateIsAboveLowWaterMark,
  // Dynamic table size update is above acknowledged setting.
  kDynamicTableSizeUpdateIsAboveAcknowledgedSetting,
  // HPACK block ends in the middle of an instruction.
  kTruncatedBlock,
  // Incoming data fragment exceeds buffer limit.
  kFragmentTooLong,
  // Total compressed HPACK data size exceeds limit.
  kCompressedHeaderSizeExceedsLimit,
};

QUICHE_EXPORT_PRIVATE absl::string_view HpackDecodingErrorToString(
    HpackDecodingError error);

}  // namespace http2

#endif  // QUICHE_HTTP2_HPACK_DECODER_HPACK_DECODING_ERROR_H_
