From 23489eaf4d63adecdd5164bcf835d716a755fcc5 Mon Sep 17 00:00:00 2001 From: Bin Wu Date: Thu, 18 Apr 2019 14:31:55 -0400 Subject: [PATCH] Implement some TODOs in quic_endian_impl.h Signed-off-by: Bin Wu --- bazel/external/quiche.BUILD | 1 + .../quic_listeners/quiche/platform/BUILD | 1 + .../quiche/platform/quic_endian_impl.h | 29 +++++++++---------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 2b65a5dddd787..0d24bc7e22c68 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -277,6 +277,7 @@ envoy_cc_test( name = "quic_platform_test", srcs = envoy_select_quiche( [ + "quiche/quic/platform/api/quic_endian_test.cc", "quiche/quic/platform/api/quic_reference_counted_test.cc", "quiche/quic/platform/api/quic_string_utils_test.cc", "quiche/quic/platform/api/quic_text_utils_test.cc", diff --git a/source/extensions/quic_listeners/quiche/platform/BUILD b/source/extensions/quic_listeners/quiche/platform/BUILD index f290bc635f3d0..f011cd34b33d4 100644 --- a/source/extensions/quic_listeners/quiche/platform/BUILD +++ b/source/extensions/quic_listeners/quiche/platform/BUILD @@ -129,6 +129,7 @@ envoy_cc_library( ":quic_platform_logging_impl_lib", "//include/envoy/thread:thread_interface", "//source/common/common:assert_lib", + "//source/common/common:byte_order_lib", "//source/server:backtrace_lib", ]), ) diff --git a/source/extensions/quic_listeners/quiche/platform/quic_endian_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_endian_impl.h index 02e5356830bf0..c456da321fa73 100644 --- a/source/extensions/quic_listeners/quiche/platform/quic_endian_impl.h +++ b/source/extensions/quic_listeners/quiche/platform/quic_endian_impl.h @@ -1,31 +1,28 @@ #pragma once -#include - -#include - // NOLINT(namespace-envoy) // This file is part of the QUICHE platform implementation, and is not to be // consumed or referenced directly by other Envoy code. It serves purely as a // porting layer for QUICHE. +#include + +#include "common/common/byte_order.h" + namespace quic { class QuicEndianImpl { public: - static uint16_t HostToNet16(uint16_t x) { return htons(x); } - static uint32_t HostToNet32(uint32_t x) { return htonl(x); } - // TODO: implement - static uint64_t HostToNet64(uint64_t /*x*/) { return 0; } - - static uint16_t NetToHost16(uint16_t x) { return ntohs(x); } - static uint32_t NetToHost32(uint32_t x) { return ntohl(x); } - // TODO: implement - static uint64_t NetToHost64(uint64_t /*x*/) { return 0; } - - // TODO: implement - static bool HostIsLittleEndian() { return false; } + static uint16_t HostToNet16(uint16_t x) { return toEndianness(x); } + static uint32_t HostToNet32(uint32_t x) { return toEndianness(x); } + static uint64_t HostToNet64(uint64_t x) { return toEndianness(x); } + + static uint16_t NetToHost16(uint16_t x) { return fromEndianness(x); } + static uint32_t NetToHost32(uint32_t x) { return fromEndianness(x); } + static uint64_t NetToHost64(uint64_t x) { return fromEndianness(x); } + + static bool HostIsLittleEndian() { return NetToHost16(0x1234) != 0x1234; } }; } // namespace quic