Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(460)

Unified Diff: net/quic/core/quic_data_reader.cc

Issue 2850573002: Landing Recent QUIC changes until 3:35 PM, Apr 26, 2017 UTC-4 (Closed)
Patch Set: remove reinterpret_cast Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/core/quic_data_reader.cc
diff --git a/net/quic/core/quic_data_reader.cc b/net/quic/core/quic_data_reader.cc
index 77ea70a5a044b6c681716522ddc2809a7921a95a..c748efcabf1fd7cb2ef1eb87370713440c4b8bf6 100644
--- a/net/quic/core/quic_data_reader.cc
+++ b/net/quic/core/quic_data_reader.cc
@@ -8,32 +8,69 @@
#include "net/quic/core/quic_packets.h"
#include "net/quic/core/quic_utils.h"
#include "net/quic/platform/api/quic_bug_tracker.h"
-#include "net/quic/platform/api/quic_endian.h"
#include "net/quic/platform/api/quic_flags.h"
#include "net/quic/platform/api/quic_logging.h"
namespace net {
-#define ENDPOINT \
- (perspective_ == Perspective::IS_SERVER ? "Server: " : "Client: ")
-
QuicDataReader::QuicDataReader(const char* data,
const size_t len,
- Perspective perspective)
- : data_(data), len_(len), pos_(0), perspective_(perspective) {
- QUIC_DVLOG(1) << ENDPOINT << "QuicDataReader";
+ Perspective perspective,
+ Endianness endianness)
+ : data_(data),
+ len_(len),
+ pos_(0),
+ perspective_(perspective),
+ endianness_(endianness) {}
+
+bool QuicDataReader::ReadUInt8(uint8_t* result) {
+ return ReadBytes(result, sizeof(*result));
}
bool QuicDataReader::ReadUInt16(uint16_t* result) {
- return ReadBytes(result, sizeof(*result));
+ if (!ReadBytes(result, sizeof(*result))) {
+ return false;
+ }
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ *result = QuicEndian::NetToHost16(*result);
+ }
+ return true;
}
bool QuicDataReader::ReadUInt32(uint32_t* result) {
- return ReadBytes(result, sizeof(*result));
+ if (!ReadBytes(result, sizeof(*result))) {
+ return false;
+ }
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ *result = QuicEndian::NetToHost32(*result);
+ }
+ return true;
}
bool QuicDataReader::ReadUInt64(uint64_t* result) {
- return ReadBytes(result, sizeof(*result));
+ if (!ReadBytes(result, sizeof(*result))) {
+ return false;
+ }
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ *result = QuicEndian::NetToHost64(*result);
+ }
+ return true;
+}
+
+bool QuicDataReader::ReadBytesToUInt64(size_t num_bytes, uint64_t* result) {
+ if (num_bytes > sizeof(*result)) {
+ return false;
+ }
+ if (endianness_ == HOST_BYTE_ORDER) {
+ return ReadBytes(result, num_bytes);
+ }
+
+ if (!ReadBytes(reinterpret_cast<char*>(result) + sizeof(*result) - num_bytes,
+ num_bytes)) {
+ return false;
+ }
+ *result = QuicEndian::NetToHost64(*result);
+ return true;
}
bool QuicDataReader::ReadUFloat16(uint64_t* result) {
@@ -97,7 +134,7 @@ bool QuicDataReader::ReadStringPiece(QuicStringPiece* result, size_t size) {
}
bool QuicDataReader::ReadConnectionId(uint64_t* connection_id) {
- if (!ReadUInt64(connection_id)) {
+ if (!ReadBytes(connection_id, sizeof(*connection_id))) {
return false;
}

Powered by Google App Engine
This is Rietveld 408576698