chromium/net/third_party/quiche/src/quiche/common/quiche_data_reader.cc

// 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.

#include "quiche/common/quiche_data_reader.h"

#include <cstring>
#include <string>

#include "absl/strings/numbers.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "quiche/common/platform/api/quiche_bug_tracker.h"
#include "quiche/common/platform/api/quiche_logging.h"
#include "quiche/common/quiche_endian.h"

namespace quiche {

QuicheDataReader::QuicheDataReader(absl::string_view data)
    :{}

QuicheDataReader::QuicheDataReader(const char* data, const size_t len)
    :{}

QuicheDataReader::QuicheDataReader(const char* data, const size_t len,
                                   quiche::Endianness endianness)
    :{}

bool QuicheDataReader::ReadUInt8(uint8_t* result) {}

bool QuicheDataReader::ReadUInt16(uint16_t* result) {}

bool QuicheDataReader::ReadUInt24(uint32_t* result) {}

bool QuicheDataReader::ReadUInt32(uint32_t* result) {}

bool QuicheDataReader::ReadUInt64(uint64_t* result) {}

bool QuicheDataReader::ReadBytesToUInt64(size_t num_bytes, uint64_t* result) {}

bool QuicheDataReader::ReadStringPiece16(absl::string_view* result) {}

bool QuicheDataReader::ReadStringPiece8(absl::string_view* result) {}

bool QuicheDataReader::ReadStringPiece(absl::string_view* result, size_t size) {}

bool QuicheDataReader::ReadTag(uint32_t* tag) {}

bool QuicheDataReader::ReadDecimal64(size_t num_digits, uint64_t* result) {}

QuicheVariableLengthIntegerLength QuicheDataReader::PeekVarInt62Length() {}

// Read an RFC 9000 62-bit Variable Length Integer.
//
// Performance notes
//
// Measurements and experiments showed that unrolling the four cases
// like this and dereferencing next_ as we do (*(next_+n) --- and then
// doing a single pos_+=x at the end) gains about 10% over making a
// loop and dereferencing next_ such as *(next_++)
//
// Using a register for pos_ was not helpful.
//
// Branches are ordered to increase the likelihood of the first being
// taken.
//
// Low-level optimization is useful here because this function will be
// called frequently, leading to outsize benefits.
bool QuicheDataReader::ReadVarInt62(uint64_t* result) {}

bool QuicheDataReader::ReadStringPieceVarInt62(absl::string_view* result) {}

bool QuicheDataReader::ReadStringVarInt62(std::string& result) {}

absl::string_view QuicheDataReader::ReadRemainingPayload() {}

absl::string_view QuicheDataReader::PeekRemainingPayload() const {}

absl::string_view QuicheDataReader::FullPayload() const {}

absl::string_view QuicheDataReader::PreviouslyReadPayload() const {}

bool QuicheDataReader::ReadBytes(void* result, size_t size) {}

bool QuicheDataReader::Seek(size_t size) {}

bool QuicheDataReader::IsDoneReading() const {}

size_t QuicheDataReader::BytesRemaining() const {}

bool QuicheDataReader::TruncateRemaining(size_t truncation_length) {}

bool QuicheDataReader::CanRead(size_t bytes) const {}

void QuicheDataReader::OnFailure() {}

uint8_t QuicheDataReader::PeekByte() const {}

std::string QuicheDataReader::DebugString() const {}

#undef ENDPOINT  // undef for jumbo builds
}  // namespace quiche