THRIFT-5215: Remove portable_endian.h

Client: cpp
Patch: James Lacey

This closes #2152
This commit is contained in:
James Lacey 2020-05-22 08:46:26 -07:00 committed by Jens Geyer
parent eb8e8437a5
commit e6d7d13c35
4 changed files with 8 additions and 156 deletions

15
LICENSE
View File

@ -238,18 +238,3 @@ For the lib/nodejs/lib/thrift/json_parse.js:
(By Douglas Crockford <douglas@crockford.com>)
--------------------------------------------------
For lib/cpp/src/thrift/portable_endian.h
// endian.h
//
// https://gist.github.com/panzi/6856583
//
// I, Mathias Panzenböck, place this file hereby into the public domain. Use
// it at your own risk for whatever you like. In case there are
// jurisdictions that don't support putting things in the public domain you
// can also consider it to be "dual licensed" under the BSD, MIT and Apache
// licenses, if you want to. This code is trivial anyway. Consider it an
// example on how to get the endian conversion functions on different
// platforms.
--------------------------------------------------

View File

@ -141,8 +141,7 @@ include_thrift_HEADERS = \
src/thrift/TApplicationException.h \
src/thrift/TLogging.h \
src/thrift/TToString.h \
src/thrift/TBase.h \
src/thrift/portable_endian.h
src/thrift/TBase.h
include_concurrencydir = $(include_thriftdir)/concurrency
include_concurrency_HEADERS = \

View File

@ -1,131 +0,0 @@
//
// endian.h
//
// https://gist.github.com/panzi/6856583
//
// I, Mathias Panzenböck, place this file hereby into the public domain. Use
// it at your own risk for whatever you like. In case there are
// jurisdictions that don't support putting things in the public domain you
// can also consider it to be "dual licensed" under the BSD, MIT and Apache
// licenses, if you want to. This code is trivial anyway. Consider it an
// example on how to get the endian conversion functions on different
// platforms.
#ifndef PORTABLE_ENDIAN_H__
#define PORTABLE_ENDIAN_H__
#if (defined(_WIN16) || defined(_WIN32) || defined(_WIN64)) && !defined(__WINDOWS__)
# define __WINDOWS__
#endif
#if defined(__linux__) || defined(__CYGWIN__)
# include <endian.h>
#elif defined(__APPLE__)
# include <libkern/OSByteOrder.h>
# define htobe16(x) OSSwapHostToBigInt16(x)
# define htole16(x) OSSwapHostToLittleInt16(x)
# define be16toh(x) OSSwapBigToHostInt16(x)
# define le16toh(x) OSSwapLittleToHostInt16(x)
# define htobe32(x) OSSwapHostToBigInt32(x)
# define htole32(x) OSSwapHostToLittleInt32(x)
# define be32toh(x) OSSwapBigToHostInt32(x)
# define le32toh(x) OSSwapLittleToHostInt32(x)
# define htobe64(x) OSSwapHostToBigInt64(x)
# define htole64(x) OSSwapHostToLittleInt64(x)
# define be64toh(x) OSSwapBigToHostInt64(x)
# define le64toh(x) OSSwapLittleToHostInt64(x)
# define __BYTE_ORDER BYTE_ORDER
# define __BIG_ENDIAN BIG_ENDIAN
# define __LITTLE_ENDIAN LITTLE_ENDIAN
# define __PDP_ENDIAN PDP_ENDIAN
#elif defined(__OpenBSD__)
# include <sys/endian.h>
#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
# include <sys/endian.h>
# define be16toh(x) betoh16(x)
# define le16toh(x) letoh16(x)
# define be32toh(x) betoh32(x)
# define le32toh(x) letoh32(x)
# define be64toh(x) betoh64(x)
# define le64toh(x) letoh64(x)
#elif defined(__WINDOWS__)
# include <winsock2.h>
# if BYTE_ORDER == LITTLE_ENDIAN
# define htobe16(x) htons(x)
# define htole16(x) (x)
# define be16toh(x) ntohs(x)
# define le16toh(x) (x)
# define htobe32(x) htonl(x)
# define htole32(x) (x)
# define be32toh(x) ntohl(x)
# define le32toh(x) (x)
# if defined(__MINGW32__)
# define htobe64(x) __builtin_bswap64(x)
# define htole64(x) (x)
# define be64toh(x) __builtin_bswap64(x)
# define le64toh(x) (x)
# else
# define htobe64(x) htonll(x)
# define htole64(x) (x)
# define be64toh(x) ntohll(x)
# define le64toh(x) (x)
# endif
# elif BYTE_ORDER == BIG_ENDIAN
/* that would be xbox 360 */
# define htobe16(x) (x)
# define htole16(x) __builtin_bswap16(x)
# define be16toh(x) (x)
# define le16toh(x) __builtin_bswap16(x)
# define htobe32(x) (x)
# define htole32(x) __builtin_bswap32(x)
# define be32toh(x) (x)
# define le32toh(x) __builtin_bswap32(x)
# define htobe64(x) (x)
# define htole64(x) __builtin_bswap64(x)
# define be64toh(x) (x)
# define le64toh(x) __builtin_bswap64(x)
# else
# error byte order not supported
# endif
# define __BYTE_ORDER BYTE_ORDER
# define __BIG_ENDIAN BIG_ENDIAN
# define __LITTLE_ENDIAN LITTLE_ENDIAN
# define __PDP_ENDIAN PDP_ENDIAN
#else
# error platform not supported
#endif
#endif

View File

@ -20,8 +20,6 @@
#ifndef _THRIFT_TRANSPORT_TWEBSOCKETSERVER_H_
#define _THRIFT_TRANSPORT_TWEBSOCKETSERVER_H_ 1
#include <thrift/portable_endian.h>
#include <cstdlib>
#include <iostream>
#include <sstream>
@ -29,6 +27,7 @@
#include <openssl/sha.h>
#include <thrift/config.h>
#include <thrift/protocol/TProtocol.h>
#include <thrift/transport/TSocket.h>
#include <thrift/transport/THttpServer.h>
#if defined(_MSC_VER) || defined(__MINGW32__)
@ -200,7 +199,7 @@ private:
void failConnection(CloseCode reason) {
writeFrameHeader(Opcode::Close);
auto buffer = htobe16(static_cast<uint16_t>(reason));
auto buffer = htons(static_cast<uint16_t>(reason));
transport_->write(reinterpret_cast<const uint8_t*>(&buffer), 2);
transport_->flush();
transport_->close();
@ -255,13 +254,13 @@ private:
if (read < 2) {
return false;
}
payloadLength = be16toh(*reinterpret_cast<uint16_t*>(headerBuffer));
payloadLength = ntohs(*reinterpret_cast<uint16_t*>(headerBuffer));
} else if (payloadLength == 127) {
read = transport_->read(headerBuffer, 8);
if (read < 8) {
return false;
}
payloadLength = be64toh(*reinterpret_cast<uint64_t*>(headerBuffer));
payloadLength = THRIFT_ntohll(*reinterpret_cast<uint64_t*>(headerBuffer));
if ((payloadLength & 0x8000000000000000) != 0) {
failConnection(CloseCode::ProtocolError);
throw TTransportException(
@ -307,7 +306,7 @@ private:
if (length >= 2) {
uint8_t buffer[2];
readBuffer_.read(buffer, 2);
CloseCode closeCode = static_cast<CloseCode>(be16toh(*reinterpret_cast<uint16_t*>(buffer)));
CloseCode closeCode = static_cast<CloseCode>(ntohs(*reinterpret_cast<uint16_t*>(buffer)));
THRIFT_UNUSED_VARIABLE(closeCode);
string closeReason = readBuffer_.readAsString(length - 2);
T_DEBUG("Connection closed: %d %s", closeCode, closeReason);
@ -359,10 +358,10 @@ private:
header[1] = static_cast<uint8_t>(length);
} else if (length < 65536) {
header[1] = 126;
*reinterpret_cast<uint16_t*>(header + 2) = htobe16(length);
*reinterpret_cast<uint16_t*>(header + 2) = htons(length);
} else {
header[1] = 127;
*reinterpret_cast<uint64_t*>(header + 2) = htobe64(length);
*reinterpret_cast<uint64_t*>(header + 2) = THRIFT_htonll(length);
}
transport_->write(header, headerSize);