| // Copyright 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_HTTP2_HPACK_VARINT_HPACK_VARINT_ENCODER_H_ |
| #define QUICHE_HTTP2_HPACK_VARINT_HPACK_VARINT_ENCODER_H_ |
| |
| #include <cstddef> |
| #include <cstdint> |
| #include <string> |
| |
| #include "common/platform/api/quiche_export.h" |
| |
| namespace http2 { |
| |
| // HPACK integer encoder class with single static method implementing variable |
| // length integer representation defined in RFC7541, Section 5.1: |
| // https://httpwg.org/specs/rfc7541.html#integer.representation |
| class QUICHE_EXPORT_PRIVATE HpackVarintEncoder { |
| public: |
| // Encode |varint|, appending encoded data to |*output|. |
| // Appends between 1 and 11 bytes in total. |
| static void Encode(uint8_t high_bits, |
| uint8_t prefix_length, |
| uint64_t varint, |
| std::string* output); |
| }; |
| |
| } // namespace http2 |
| |
| #endif // QUICHE_HTTP2_HPACK_VARINT_HPACK_VARINT_ENCODER_H_ |