summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/common/quiche_data_reader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/third_party/quiche/src/common/quiche_data_reader.cc')
-rw-r--r--chromium/net/third_party/quiche/src/common/quiche_data_reader.cc231
1 files changed, 0 insertions, 231 deletions
diff --git a/chromium/net/third_party/quiche/src/common/quiche_data_reader.cc b/chromium/net/third_party/quiche/src/common/quiche_data_reader.cc
deleted file mode 100644
index 1f948f1db8a..00000000000
--- a/chromium/net/third_party/quiche/src/common/quiche_data_reader.cc
+++ /dev/null
@@ -1,231 +0,0 @@
-// 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 "common/quiche_data_reader.h"
-
-#include <cstring>
-
-#include "absl/strings/numbers.h"
-#include "absl/strings/str_cat.h"
-#include "absl/strings/string_view.h"
-#include "common/platform/api/quiche_bug_tracker.h"
-#include "common/platform/api/quiche_logging.h"
-#include "common/quiche_endian.h"
-
-namespace quiche {
-
-QuicheDataReader::QuicheDataReader(absl::string_view data)
- : QuicheDataReader(data.data(), data.length(), quiche::NETWORK_BYTE_ORDER) {
-}
-
-QuicheDataReader::QuicheDataReader(const char* data, const size_t len)
- : QuicheDataReader(data, len, quiche::NETWORK_BYTE_ORDER) {}
-
-QuicheDataReader::QuicheDataReader(const char* data,
- const size_t len,
- quiche::Endianness endianness)
- : data_(data), len_(len), pos_(0), endianness_(endianness) {}
-
-bool QuicheDataReader::ReadUInt8(uint8_t* result) {
- return ReadBytes(result, sizeof(*result));
-}
-
-bool QuicheDataReader::ReadUInt16(uint16_t* result) {
- if (!ReadBytes(result, sizeof(*result))) {
- return false;
- }
- if (endianness_ == quiche::NETWORK_BYTE_ORDER) {
- *result = quiche::QuicheEndian::NetToHost16(*result);
- }
- return true;
-}
-
-bool QuicheDataReader::ReadUInt24(uint32_t* result) {
- if (endianness_ != quiche::NETWORK_BYTE_ORDER) {
- // TODO(b/214573190): Implement and test HOST_BYTE_ORDER case.
- QUICHE_BUG(QuicheDataReader_ReadUInt24_NotImplemented);
- return false;
- }
-
- *result = 0;
- if (!ReadBytes(reinterpret_cast<char*>(result) + 1, 3u)) {
- return false;
- }
- *result = quiche::QuicheEndian::NetToHost32(*result);
- return true;
-}
-
-bool QuicheDataReader::ReadUInt32(uint32_t* result) {
- if (!ReadBytes(result, sizeof(*result))) {
- return false;
- }
- if (endianness_ == quiche::NETWORK_BYTE_ORDER) {
- *result = quiche::QuicheEndian::NetToHost32(*result);
- }
- return true;
-}
-
-bool QuicheDataReader::ReadUInt64(uint64_t* result) {
- if (!ReadBytes(result, sizeof(*result))) {
- return false;
- }
- if (endianness_ == quiche::NETWORK_BYTE_ORDER) {
- *result = quiche::QuicheEndian::NetToHost64(*result);
- }
- return true;
-}
-
-bool QuicheDataReader::ReadBytesToUInt64(size_t num_bytes, uint64_t* result) {
- *result = 0u;
- if (num_bytes > sizeof(*result)) {
- return false;
- }
- if (endianness_ == quiche::HOST_BYTE_ORDER) {
- return ReadBytes(result, num_bytes);
- }
-
- if (!ReadBytes(reinterpret_cast<char*>(result) + sizeof(*result) - num_bytes,
- num_bytes)) {
- return false;
- }
- *result = quiche::QuicheEndian::NetToHost64(*result);
- return true;
-}
-
-bool QuicheDataReader::ReadStringPiece16(absl::string_view* result) {
- // Read resultant length.
- uint16_t result_len;
- if (!ReadUInt16(&result_len)) {
- // OnFailure() already called.
- return false;
- }
-
- return ReadStringPiece(result, result_len);
-}
-
-bool QuicheDataReader::ReadStringPiece8(absl::string_view* result) {
- // Read resultant length.
- uint8_t result_len;
- if (!ReadUInt8(&result_len)) {
- // OnFailure() already called.
- return false;
- }
-
- return ReadStringPiece(result, result_len);
-}
-
-bool QuicheDataReader::ReadStringPiece(absl::string_view* result, size_t size) {
- // Make sure that we have enough data to read.
- if (!CanRead(size)) {
- OnFailure();
- return false;
- }
-
- // Set result.
- *result = absl::string_view(data_ + pos_, size);
-
- // Iterate.
- pos_ += size;
-
- return true;
-}
-
-bool QuicheDataReader::ReadTag(uint32_t* tag) {
- return ReadBytes(tag, sizeof(*tag));
-}
-
-bool QuicheDataReader::ReadDecimal64(size_t num_digits, uint64_t* result) {
- absl::string_view digits;
- if (!ReadStringPiece(&digits, num_digits)) {
- return false;
- }
-
- return absl::SimpleAtoi(digits, result);
-}
-
-absl::string_view QuicheDataReader::ReadRemainingPayload() {
- absl::string_view payload = PeekRemainingPayload();
- pos_ = len_;
- return payload;
-}
-
-absl::string_view QuicheDataReader::PeekRemainingPayload() const {
- return absl::string_view(data_ + pos_, len_ - pos_);
-}
-
-absl::string_view QuicheDataReader::FullPayload() const {
- return absl::string_view(data_, len_);
-}
-
-absl::string_view QuicheDataReader::PreviouslyReadPayload() const {
- return absl::string_view(data_, pos_);
-}
-
-bool QuicheDataReader::ReadBytes(void* result, size_t size) {
- // Make sure that we have enough data to read.
- if (!CanRead(size)) {
- OnFailure();
- return false;
- }
-
- // Read into result.
- memcpy(result, data_ + pos_, size);
-
- // Iterate.
- pos_ += size;
-
- return true;
-}
-
-bool QuicheDataReader::Seek(size_t size) {
- if (!CanRead(size)) {
- OnFailure();
- return false;
- }
- pos_ += size;
- return true;
-}
-
-bool QuicheDataReader::IsDoneReading() const {
- return len_ == pos_;
-}
-
-size_t QuicheDataReader::BytesRemaining() const {
- return len_ - pos_;
-}
-
-bool QuicheDataReader::TruncateRemaining(size_t truncation_length) {
- if (truncation_length > BytesRemaining()) {
- return false;
- }
- len_ = pos_ + truncation_length;
- return true;
-}
-
-bool QuicheDataReader::CanRead(size_t bytes) const {
- return bytes <= (len_ - pos_);
-}
-
-void QuicheDataReader::OnFailure() {
- // Set our iterator to the end of the buffer so that further reads fail
- // immediately.
- pos_ = len_;
-}
-
-uint8_t QuicheDataReader::PeekByte() const {
- if (pos_ >= len_) {
- QUICHE_LOG(FATAL)
- << "Reading is done, cannot peek next byte. Tried to read pos = "
- << pos_ << " buffer length = " << len_;
- return 0;
- }
- return data_[pos_];
-}
-
-std::string QuicheDataReader::DebugString() const {
- return absl::StrCat(" { length: ", len_, ", position: ", pos_, " }");
-}
-
-#undef ENDPOINT // undef for jumbo builds
-} // namespace quiche