Repository: incubator-quickstep Updated Branches: refs/heads/trace-dev 29024a3e9 -> 9005d9935
Update ntohll/htonll for protability Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/9005d993 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/9005d993 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/9005d993 Branch: refs/heads/trace-dev Commit: 9005d99359b8d7cae8fc2c31539e70bd5e45761f Parents: 29024a3 Author: Jianqiao Zhu <jianq...@cs.wisc.edu> Authored: Fri Nov 9 22:23:04 2018 -0600 Committer: Jianqiao Zhu <jianq...@cs.wisc.edu> Committed: Fri Nov 9 22:30:39 2018 -0600 ---------------------------------------------------------------------- cli/simple_socket/SimpleSocketConnection.hpp | 25 ++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9005d993/cli/simple_socket/SimpleSocketConnection.hpp ---------------------------------------------------------------------- diff --git a/cli/simple_socket/SimpleSocketConnection.hpp b/cli/simple_socket/SimpleSocketConnection.hpp index 111db6a..0bd7774 100644 --- a/cli/simple_socket/SimpleSocketConnection.hpp +++ b/cli/simple_socket/SimpleSocketConnection.hpp @@ -20,6 +20,7 @@ #ifndef QUICKSTEP_CLI_SIMPLE_SOCKET_SIMPLE_SOCKET_CONNECTION_HPP_ #define QUICKSTEP_CLI_SIMPLE_SOCKET_SIMPLE_SOCKET_CONNECTION_HPP_ +#include <arpa/inet.h> #include <sys/socket.h> #include <cstdint> @@ -72,12 +73,12 @@ class SimpleSocketConnection { // Decode request data. const std::uint64_t *size_ptr = static_cast<const std::uint64_t*>(request_data_); - const std::uint64_t num_fields = ntohll(*size_ptr++); + const std::uint64_t num_fields = Ntohll(*size_ptr++); std::vector<std::pair<std::uint64_t, std::uint64_t>> field_sizes; for (std::size_t i = 0; i < num_fields; ++i) { - const std::uint64_t key_size = ntohll(*size_ptr++); - const std::uint64_t value_size = ntohll(*size_ptr++); + const std::uint64_t key_size = Ntohll(*size_ptr++); + const std::uint64_t value_size = Ntohll(*size_ptr++); field_sizes.emplace_back(key_size, value_size); } @@ -108,11 +109,11 @@ class SimpleSocketConnection { inline std::uint64_t receiveUInt64() const { std::uint64_t code; receiveData(&code, sizeof(std::uint64_t)); - return ntohll(code); + return Ntohll(code); } inline void writeUInt64(const std::uint64_t value) const { - const uint64_t code = htonll(value); + const uint64_t code = Htonll(value); write(socket_fd_, &code, sizeof(std::uint64_t)); } @@ -146,6 +147,20 @@ class SimpleSocketConnection { } } + inline static std::uint64_t Ntohll(const std::uint64_t code) { + const std::uint32_t lo32 = static_cast<std::uint32_t>(code); + const std::uint32_t hi32 = static_cast<std::uint32_t>(code >> 32); + return (static_cast<std::uint64_t>(ntohl(lo32)) << 32) + | static_cast<std::uint64_t>(ntohl(hi32)); + } + + inline static std::uint64_t Htonll(const std::uint64_t code) { + const std::uint32_t lo32 = static_cast<std::uint32_t>(code); + const std::uint32_t hi32 = static_cast<std::uint32_t>(code >> 32); + return (static_cast<std::uint64_t>(htonl(lo32)) << 32) + | static_cast<std::uint64_t>(htonl(hi32)); + } + const int socket_fd_; std::uint64_t request_data_length_; void *request_data_;