#include "quiche/web_transport/web_transport_headers.h"
#include <array>
#include <cstdint>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "absl/base/attributes.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
#include "quiche/common/quiche_status_utils.h"
#include "quiche/common/structured_headers.h"
namespace webtransport {
namespace {
Dictionary;
DictionaryMember;
Item;
ItemTypeToString;
List;
ParameterizedItem;
ParameterizedMember;
absl::Status CheckItemType(const ParameterizedItem& item,
Item::ItemType expected_type) { … }
absl::Status CheckMemberType(const ParameterizedMember& member,
Item::ItemType expected_type) { … }
ABSL_CONST_INIT std::array kInitHeaderFields{ … };
}
absl::StatusOr<std::vector<std::string>> ParseSubprotocolRequestHeader(
absl::string_view value) { … }
absl::StatusOr<std::string> SerializeSubprotocolRequestHeader(
absl::Span<const std::string> subprotocols) { … }
absl::StatusOr<std::string> ParseSubprotocolResponseHeader(
absl::string_view value) { … }
absl::StatusOr<std::string> SerializeSubprotocolResponseHeader(
absl::string_view subprotocol) { … }
absl::StatusOr<WebTransportInitHeader> ParseInitHeader(
absl::string_view header) { … }
absl::StatusOr<std::string> SerializeInitHeader(
const WebTransportInitHeader& header) { … }
}