|  | // Copyright (c) 2019 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_HTTP_HTTP_CONSTANTS_H_ | 
|  | #define QUICHE_QUIC_CORE_HTTP_HTTP_CONSTANTS_H_ | 
|  |  | 
|  | #include <cstdint> | 
|  | #include <string> | 
|  |  | 
|  | #include "absl/strings/string_view.h" | 
|  | #include "quic/core/quic_types.h" | 
|  | #include "quic/platform/api/quic_export.h" | 
|  |  | 
|  | namespace quic { | 
|  |  | 
|  | // Unidirectional stream types. | 
|  | enum : uint64_t { | 
|  | // https://quicwg.org/base-drafts/draft-ietf-quic-http.html#unidirectional-streams | 
|  | kControlStream = 0x00, | 
|  | kServerPushStream = 0x01, | 
|  | // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#enc-dec-stream-def | 
|  | kQpackEncoderStream = 0x02, | 
|  | kQpackDecoderStream = 0x03, | 
|  | // https://ietf-wg-webtrans.github.io/draft-ietf-webtrans-http3/draft-ietf-webtrans-http3.html#name-unidirectional-streams | 
|  | kWebTransportUnidirectionalStream = 0x54, | 
|  | }; | 
|  |  | 
|  | // This includes control stream, QPACK encoder stream, and QPACK decoder stream. | 
|  | enum : QuicStreamCount { kHttp3StaticUnidirectionalStreamCount = 3 }; | 
|  |  | 
|  | // HTTP/3 and QPACK settings identifiers. | 
|  | // https://quicwg.org/base-drafts/draft-ietf-quic-http.html#settings-parameters | 
|  | // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#configuration | 
|  | enum Http3AndQpackSettingsIdentifiers : uint64_t { | 
|  | // Same value as spdy::SETTINGS_HEADER_TABLE_SIZE. | 
|  | SETTINGS_QPACK_MAX_TABLE_CAPACITY = 0x01, | 
|  | // Same value as spdy::SETTINGS_MAX_HEADER_LIST_SIZE. | 
|  | SETTINGS_MAX_FIELD_SECTION_SIZE = 0x06, | 
|  | SETTINGS_QPACK_BLOCKED_STREAMS = 0x07, | 
|  | // draft-ietf-masque-h3-datagram. | 
|  | SETTINGS_H3_DATAGRAM = 0x276, | 
|  | // draft-ietf-webtrans-http3-00 | 
|  | SETTINGS_WEBTRANS_DRAFT00 = 0x2b603742, | 
|  | }; | 
|  |  | 
|  | // Returns HTTP/3 SETTINGS identifier as a string. | 
|  | QUIC_EXPORT std::string H3SettingsToString( | 
|  | Http3AndQpackSettingsIdentifiers identifier); | 
|  |  | 
|  | // Default maximum dynamic table capacity, communicated via | 
|  | // SETTINGS_QPACK_MAX_TABLE_CAPACITY. | 
|  | enum : QuicByteCount { | 
|  | kDefaultQpackMaxDynamicTableCapacity = 64 * 1024  // 64 KB | 
|  | }; | 
|  |  | 
|  | // Default limit on the size of uncompressed headers, | 
|  | // communicated via SETTINGS_MAX_HEADER_LIST_SIZE. | 
|  | enum : QuicByteCount { | 
|  | kDefaultMaxUncompressedHeaderSize = 16 * 1024  // 16 KB | 
|  | }; | 
|  |  | 
|  | // Default limit on number of blocked streams, communicated via | 
|  | // SETTINGS_QPACK_BLOCKED_STREAMS. | 
|  | enum : uint64_t { kDefaultMaximumBlockedStreams = 100 }; | 
|  |  | 
|  | ABSL_CONST_INIT QUIC_EXPORT_PRIVATE extern const absl::string_view | 
|  | kUserAgentHeaderName; | 
|  |  | 
|  | }  // namespace quic | 
|  |  | 
|  | #endif  // QUICHE_QUIC_CORE_HTTP_HTTP_CONSTANTS_H_ |