Add QuicheDataReader::ReadStringPiece8
This complements ReadStringPiece16 and will be used for CHLO parsing.
gfe-relnote: n/a, new unused code
PiperOrigin-RevId: 305970104
Change-Id: I4d4a17da254fa49ea469ff6be7c7a9d5cfa0347f
diff --git a/common/quiche_data_reader.cc b/common/quiche_data_reader.cc
index 3854651..f6b6fb5 100644
--- a/common/quiche_data_reader.cc
+++ b/common/quiche_data_reader.cc
@@ -85,6 +85,17 @@
return ReadStringPiece(result, result_len);
}
+bool QuicheDataReader::ReadStringPiece8(quiche::QuicheStringPiece* 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(quiche::QuicheStringPiece* result,
size_t size) {
// Make sure that we have enough data to read.
diff --git a/common/quiche_data_reader.h b/common/quiche_data_reader.h
index c837172..bd67873 100644
--- a/common/quiche_data_reader.h
+++ b/common/quiche_data_reader.h
@@ -65,6 +65,15 @@
// Returns true on success, false otherwise.
bool ReadStringPiece16(quiche::QuicheStringPiece* result);
+ // Reads a string prefixed with 8-bit length into the given output parameter.
+ //
+ // NOTE: Does not copy but rather references strings in the underlying buffer.
+ // This should be kept in mind when handling memory management!
+ //
+ // Forwards the internal iterator on success.
+ // Returns true on success, false otherwise.
+ bool ReadStringPiece8(quiche::QuicheStringPiece* result);
+
// Reads a given number of bytes into the given buffer. The buffer
// must be of adequate size.
// Forwards the internal iterator on success.