// Copyright (c) 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_COMMON_QUICHE_DATA_WRITER_H_ #define QUICHE_COMMON_QUICHE_DATA_WRITER_H_ #include <cstddef> #include <cstdint> #include <cstring> #include <limits> #include "absl/strings/string_view.h" #include "quiche/common/platform/api/quiche_export.h" #include "quiche/common/platform/api/quiche_logging.h" #include "quiche/common/quiche_endian.h" namespace quiche { // Maximum value that can be properly encoded using RFC 9000 62-bit Variable // Length Integer encoding. enum : uint64_t { … }; // RFC 9000 62-bit Variable Length Integer encoding masks // If a uint64_t anded with a mask is not 0 then the value is encoded // using that length (or is too big, in the case of kVarInt62ErrorMask). // Values must be checked in order (error, 8-, 4-, and then 2- bytes) // and if none are non-0, the value is encoded in 1 byte. enum : uint64_t { … }; // This class provides facilities for packing binary data. // // The QuicheDataWriter supports appending primitive values (int, string, etc) // to a frame instance. The internal memory buffer is exposed as the "data" // of the QuicheDataWriter. class QUICHE_EXPORT QuicheDataWriter { … }; } // namespace quiche #endif // QUICHE_COMMON_QUICHE_DATA_WRITER_H_