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

Unified Diff: net/quic/core/quic_data_writer.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_writer.cc
diff --git a/net/quic/core/quic_data_writer.cc b/net/quic/core/quic_data_writer.cc
index 9b1c4261e084f6073d08bfaded177fa6ecd77195..3290dba471153fc718fa6342fcddba9de8c0b7e7 100644
--- a/net/quic/core/quic_data_writer.cc
+++ b/net/quic/core/quic_data_writer.cc
@@ -8,21 +8,20 @@
#include <limits>
#include "net/quic/core/quic_utils.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: ")
-
QuicDataWriter::QuicDataWriter(size_t size,
char* buffer,
- Perspective perspective)
- : buffer_(buffer), capacity_(size), length_(0), perspective_(perspective) {
- QUIC_DVLOG(1) << ENDPOINT << "QuicDataReader";
-}
+ Perspective perspective,
+ Endianness endianness)
+ : buffer_(buffer),
+ capacity_(size),
+ length_(0),
+ perspective_(perspective),
+ endianness_(endianness) {}
QuicDataWriter::~QuicDataWriter() {}
@@ -35,23 +34,39 @@ bool QuicDataWriter::WriteUInt8(uint8_t value) {
}
bool QuicDataWriter::WriteUInt16(uint16_t value) {
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ value = QuicEndian::HostToNet16(value);
+ }
return WriteBytes(&value, sizeof(value));
}
bool QuicDataWriter::WriteUInt32(uint32_t value) {
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ value = QuicEndian::HostToNet32(value);
+ }
return WriteBytes(&value, sizeof(value));
}
-bool QuicDataWriter::WriteUInt48(uint64_t value) {
- uint16_t hi = static_cast<uint16_t>(value >> 32);
- uint32_t lo = static_cast<uint32_t>(value);
- return WriteUInt32(lo) && WriteUInt16(hi);
-}
-
bool QuicDataWriter::WriteUInt64(uint64_t value) {
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ value = QuicEndian::HostToNet64(value);
+ }
return WriteBytes(&value, sizeof(value));
}
+bool QuicDataWriter::WriteBytesToUInt64(size_t num_bytes, uint64_t value) {
+ if (num_bytes > sizeof(value)) {
+ return false;
+ }
+ if (endianness_ == HOST_BYTE_ORDER) {
+ return WriteBytes(&value, num_bytes);
+ }
+
+ value = QuicEndian::HostToNet64(value);
+ return WriteBytes(reinterpret_cast<char*>(&value) + sizeof(value) - num_bytes,
+ num_bytes);
+}
+
bool QuicDataWriter::WriteUFloat16(uint64_t value) {
uint16_t result;
if (value < (UINT64_C(1) << kUFloat16MantissaEffectiveBits)) {
@@ -88,6 +103,9 @@ bool QuicDataWriter::WriteUFloat16(uint64_t value) {
result = static_cast<uint16_t>(value + (exponent << kUFloat16MantissaBits));
}
+ if (endianness_ == NETWORK_BYTE_ORDER) {
+ result = QuicEndian::HostToNet16(result);
+ }
return WriteBytes(&result, sizeof(result));
}
@@ -159,7 +177,7 @@ bool QuicDataWriter::WriteConnectionId(uint64_t connection_id) {
connection_id = QuicEndian::HostToNet64(connection_id);
}
- return WriteUInt64(connection_id);
+ return WriteBytes(&connection_id, sizeof(connection_id));
}
bool QuicDataWriter::WriteTag(uint32_t tag) {

Powered by Google App Engine
This is Rietveld 408576698