From fb59c1dc828d41d087858a12f3561efd62d086b8 Mon Sep 17 00:00:00 2001 From: yangzhg Date: Mon, 24 Jan 2022 13:22:07 +0800 Subject: [PATCH 1/4] ByteSize() is deprecated, use ByteSizeLong() instead --- src/brpc/policy/baidu_rpc_protocol.cpp | 6 +++++- src/brpc/policy/hulu_pbrpc_protocol.cpp | 6 +++++- src/brpc/policy/public_pbrpc_protocol.cpp | 4 ++++ src/brpc/policy/sofa_pbrpc_protocol.cpp | 6 +++++- src/brpc/policy/streaming_rpc_protocol.cpp | 4 ++++ 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/brpc/policy/baidu_rpc_protocol.cpp b/src/brpc/policy/baidu_rpc_protocol.cpp index 7a507d1013..7febd98c8c 100644 --- a/src/brpc/policy/baidu_rpc_protocol.cpp +++ b/src/brpc/policy/baidu_rpc_protocol.cpp @@ -59,7 +59,7 @@ DEFINE_bool(baidu_protocol_use_fullname, true, // 5. Not supported: chunk_info // Pack header into `buf' -inline void PackRpcHeader(char* rpc_header, int meta_size, int payload_size) { +inline void PackRpcHeader(char* rpc_header, uint32_t meta_size, int payload_size) { uint32_t* dummy = (uint32_t*)rpc_header; // suppress strict-alias warning *dummy = *(uint32_t*)"PRPC"; butil::RawPacker(rpc_header + 4) @@ -69,7 +69,11 @@ inline void PackRpcHeader(char* rpc_header, int meta_size, int payload_size) { static void SerializeRpcHeaderAndMeta( butil::IOBuf* out, const RpcMeta& meta, int payload_size) { + #if GOOGLE_PROTOBUF_VERSION >= 3010000 + const uint32_t meta_size = meta.ByteSizeLong(); + #else const int meta_size = meta.ByteSize(); + #endif if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackRpcHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/hulu_pbrpc_protocol.cpp b/src/brpc/policy/hulu_pbrpc_protocol.cpp index 8f9855e112..ea871aff7f 100644 --- a/src/brpc/policy/hulu_pbrpc_protocol.cpp +++ b/src/brpc/policy/hulu_pbrpc_protocol.cpp @@ -142,7 +142,7 @@ class HuluRawUnpacker { const char* _stream; }; -inline void PackHuluHeader(char* hulu_header, int meta_size, int body_size) { +inline void PackHuluHeader(char* hulu_header, uint32_t meta_size, int body_size) { uint32_t* dummy = reinterpret_cast(hulu_header); // suppress strict-alias warning *dummy = *reinterpret_cast("HULU"); HuluRawPacker rp(hulu_header + 4); @@ -152,7 +152,11 @@ inline void PackHuluHeader(char* hulu_header, int meta_size, int body_size) { template static void SerializeHuluHeaderAndMeta( butil::IOBuf* out, const Meta& meta, int payload_size) { + #if GOOGLE_PROTOBUF_VERSION >= 3010000 + const uint32_t meta_size = meta.ByteSizeLong(); + #else const int meta_size = meta.ByteSize(); + #endif if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackHuluHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/public_pbrpc_protocol.cpp b/src/brpc/policy/public_pbrpc_protocol.cpp index e5f34b2ffe..25b04d181f 100644 --- a/src/brpc/policy/public_pbrpc_protocol.cpp +++ b/src/brpc/policy/public_pbrpc_protocol.cpp @@ -266,7 +266,11 @@ void PackPublicPbrpcRequest(butil::IOBuf* buf, nshead.magic_num = NSHEAD_MAGICNUM; snprintf(nshead.provider, sizeof(nshead.provider), "%s", PROVIDER); nshead.version = NSHEAD_VERSION; + #if GOOGLE_PROTOBUF_VERSION >= 3010000 + nshead.body_len = pbreq.ByteSizeLong(); + #else nshead.body_len = pbreq.ByteSize(); + #endif buf->append(&nshead, sizeof(nshead)); Span* span = ControllerPrivateAccessor(controller).span(); diff --git a/src/brpc/policy/sofa_pbrpc_protocol.cpp b/src/brpc/policy/sofa_pbrpc_protocol.cpp index b0769d0f8b..447591d1e5 100644 --- a/src/brpc/policy/sofa_pbrpc_protocol.cpp +++ b/src/brpc/policy/sofa_pbrpc_protocol.cpp @@ -129,7 +129,7 @@ class SofaRawUnpacker { const char* _stream; }; -inline void PackSofaHeader(char* sofa_header, int meta_size, int body_size) { +inline void PackSofaHeader(char* sofa_header, uint32_t meta_size, int body_size) { uint32_t* dummy = reinterpret_cast(sofa_header); // suppress strict-alias warning *dummy = *reinterpret_cast("SOFA"); @@ -139,7 +139,11 @@ inline void PackSofaHeader(char* sofa_header, int meta_size, int body_size) { static void SerializeSofaHeaderAndMeta( butil::IOBuf* out, const SofaRpcMeta& meta, int payload_size) { + #if GOOGLE_PROTOBUF_VERSION >= 3010000 + const uint32_t meta_size = meta.ByteSizeLong(); + #else const int meta_size = meta.ByteSize(); + #endif if (meta_size <= 232) { // most common cases char header_and_meta[24 + meta_size]; PackSofaHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/streaming_rpc_protocol.cpp b/src/brpc/policy/streaming_rpc_protocol.cpp index df47032de6..88ee1a1969 100644 --- a/src/brpc/policy/streaming_rpc_protocol.cpp +++ b/src/brpc/policy/streaming_rpc_protocol.cpp @@ -43,7 +43,11 @@ void PackStreamMessage(butil::IOBuf* out, const StreamFrameMeta &fm, const butil::IOBuf *data) { const uint32_t data_length = data ? data->length() : 0; + #if GOOGLE_PROTOBUF_VERSION >= 3010000 + const uint32_t meta_length = fm.ByteSizeLong(); + #else const uint32_t meta_length = fm.ByteSize(); + #endif char head[12]; uint32_t* dummy = (uint32_t*)head; // suppresses strict-alias warning *(uint32_t*)dummy = *(const uint32_t*)"STRM"; From 0c6135feaae1917c889a3eae2a74189f1f5482bb Mon Sep 17 00:00:00 2001 From: yangzhg Date: Tue, 29 Mar 2022 15:57:19 +0800 Subject: [PATCH 2/4] add macro --- src/brpc/policy/baidu_rpc_protocol.cpp | 6 +----- src/brpc/policy/hulu_pbrpc_protocol.cpp | 6 +----- src/brpc/policy/public_pbrpc_protocol.cpp | 6 +----- src/brpc/policy/sofa_pbrpc_protocol.cpp | 6 +----- src/brpc/policy/streaming_rpc_protocol.cpp | 6 +----- src/brpc/protocol.h | 9 +++++++++ 6 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/brpc/policy/baidu_rpc_protocol.cpp b/src/brpc/policy/baidu_rpc_protocol.cpp index 7febd98c8c..ad83a85ec0 100644 --- a/src/brpc/policy/baidu_rpc_protocol.cpp +++ b/src/brpc/policy/baidu_rpc_protocol.cpp @@ -69,11 +69,7 @@ inline void PackRpcHeader(char* rpc_header, uint32_t meta_size, int payload_size static void SerializeRpcHeaderAndMeta( butil::IOBuf* out, const RpcMeta& meta, int payload_size) { - #if GOOGLE_PROTOBUF_VERSION >= 3010000 - const uint32_t meta_size = meta.ByteSizeLong(); - #else - const int meta_size = meta.ByteSize(); - #endif + const uint32_t meta_size = PROTOBUF_BYTE_SIZE(meta); if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackRpcHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/hulu_pbrpc_protocol.cpp b/src/brpc/policy/hulu_pbrpc_protocol.cpp index ea871aff7f..aa04b3106d 100644 --- a/src/brpc/policy/hulu_pbrpc_protocol.cpp +++ b/src/brpc/policy/hulu_pbrpc_protocol.cpp @@ -152,11 +152,7 @@ inline void PackHuluHeader(char* hulu_header, uint32_t meta_size, int body_size) template static void SerializeHuluHeaderAndMeta( butil::IOBuf* out, const Meta& meta, int payload_size) { - #if GOOGLE_PROTOBUF_VERSION >= 3010000 - const uint32_t meta_size = meta.ByteSizeLong(); - #else - const int meta_size = meta.ByteSize(); - #endif + const uint32_t meta_size = PROTOBUF_BYTE_SIZE(meta); if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackHuluHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/public_pbrpc_protocol.cpp b/src/brpc/policy/public_pbrpc_protocol.cpp index 25b04d181f..1aba5fa0f5 100644 --- a/src/brpc/policy/public_pbrpc_protocol.cpp +++ b/src/brpc/policy/public_pbrpc_protocol.cpp @@ -266,11 +266,7 @@ void PackPublicPbrpcRequest(butil::IOBuf* buf, nshead.magic_num = NSHEAD_MAGICNUM; snprintf(nshead.provider, sizeof(nshead.provider), "%s", PROVIDER); nshead.version = NSHEAD_VERSION; - #if GOOGLE_PROTOBUF_VERSION >= 3010000 - nshead.body_len = pbreq.ByteSizeLong(); - #else - nshead.body_len = pbreq.ByteSize(); - #endif + nshead.body_len = PROTOBUF_BYTE_SIZE(pbreq); buf->append(&nshead, sizeof(nshead)); Span* span = ControllerPrivateAccessor(controller).span(); diff --git a/src/brpc/policy/sofa_pbrpc_protocol.cpp b/src/brpc/policy/sofa_pbrpc_protocol.cpp index 447591d1e5..5f6125751c 100644 --- a/src/brpc/policy/sofa_pbrpc_protocol.cpp +++ b/src/brpc/policy/sofa_pbrpc_protocol.cpp @@ -139,11 +139,7 @@ inline void PackSofaHeader(char* sofa_header, uint32_t meta_size, int body_size) static void SerializeSofaHeaderAndMeta( butil::IOBuf* out, const SofaRpcMeta& meta, int payload_size) { - #if GOOGLE_PROTOBUF_VERSION >= 3010000 - const uint32_t meta_size = meta.ByteSizeLong(); - #else - const int meta_size = meta.ByteSize(); - #endif + const uint32_t meta_size = PROTOBUF_BYTE_SIZE(meta); if (meta_size <= 232) { // most common cases char header_and_meta[24 + meta_size]; PackSofaHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/streaming_rpc_protocol.cpp b/src/brpc/policy/streaming_rpc_protocol.cpp index 88ee1a1969..2097b6f83d 100644 --- a/src/brpc/policy/streaming_rpc_protocol.cpp +++ b/src/brpc/policy/streaming_rpc_protocol.cpp @@ -43,11 +43,7 @@ void PackStreamMessage(butil::IOBuf* out, const StreamFrameMeta &fm, const butil::IOBuf *data) { const uint32_t data_length = data ? data->length() : 0; - #if GOOGLE_PROTOBUF_VERSION >= 3010000 - const uint32_t meta_length = fm.ByteSizeLong(); - #else - const uint32_t meta_length = fm.ByteSize(); - #endif + const uint32_t meta_length = PROTOBUF_BYTE_SIZE(fm); char head[12]; uint32_t* dummy = (uint32_t*)head; // suppresses strict-alias warning *(uint32_t*)dummy = *(const uint32_t*)"STRM"; diff --git a/src/brpc/protocol.h b/src/brpc/protocol.h index b988a3963b..f54dd5de4b 100755 --- a/src/brpc/protocol.h +++ b/src/brpc/protocol.h @@ -56,6 +56,15 @@ class InputMessageBase; DECLARE_uint64(max_body_size); DECLARE_bool(log_error_text); +// Get the serialized byte size of the protobuf message, +// different versions of protobuf have different methods + +#if GOOGLE_PROTOBUF_VERSION >= 3010000 +#define PROTOBUF_BYTE_SIZE(message) ((message).ByteSizeLong()) +#else +#define PROTOBUF_BYTE_SIZE(message) (static_cast((message).ByteSize())) +#endif + // 3 steps to add a new Protocol: // Step1: Add a new ProtocolType in src/brpc/options.proto // as identifier of the Protocol. From 9e61cae548c723eb3d22fd378f7f9c1f55321ce5 Mon Sep 17 00:00:00 2001 From: yangzhg Date: Wed, 30 Mar 2022 09:43:59 +0800 Subject: [PATCH 3/4] use method instead of macro --- src/brpc/policy/baidu_rpc_protocol.cpp | 2 +- src/brpc/policy/hulu_pbrpc_protocol.cpp | 2 +- src/brpc/policy/public_pbrpc_protocol.cpp | 2 +- src/brpc/policy/sofa_pbrpc_protocol.cpp | 2 +- src/brpc/policy/streaming_rpc_protocol.cpp | 2 +- src/brpc/protocol.h | 9 ++++++--- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/brpc/policy/baidu_rpc_protocol.cpp b/src/brpc/policy/baidu_rpc_protocol.cpp index ad83a85ec0..93775a9e7c 100644 --- a/src/brpc/policy/baidu_rpc_protocol.cpp +++ b/src/brpc/policy/baidu_rpc_protocol.cpp @@ -69,7 +69,7 @@ inline void PackRpcHeader(char* rpc_header, uint32_t meta_size, int payload_size static void SerializeRpcHeaderAndMeta( butil::IOBuf* out, const RpcMeta& meta, int payload_size) { - const uint32_t meta_size = PROTOBUF_BYTE_SIZE(meta); + const uint32_t meta_size = get_protobuf_byte_size(meta); if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackRpcHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/hulu_pbrpc_protocol.cpp b/src/brpc/policy/hulu_pbrpc_protocol.cpp index aa04b3106d..d789a152b0 100644 --- a/src/brpc/policy/hulu_pbrpc_protocol.cpp +++ b/src/brpc/policy/hulu_pbrpc_protocol.cpp @@ -152,7 +152,7 @@ inline void PackHuluHeader(char* hulu_header, uint32_t meta_size, int body_size) template static void SerializeHuluHeaderAndMeta( butil::IOBuf* out, const Meta& meta, int payload_size) { - const uint32_t meta_size = PROTOBUF_BYTE_SIZE(meta); + const uint32_t meta_size = get_protobuf_byte_size(meta); if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackHuluHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/public_pbrpc_protocol.cpp b/src/brpc/policy/public_pbrpc_protocol.cpp index 1aba5fa0f5..79e84bc6de 100644 --- a/src/brpc/policy/public_pbrpc_protocol.cpp +++ b/src/brpc/policy/public_pbrpc_protocol.cpp @@ -266,7 +266,7 @@ void PackPublicPbrpcRequest(butil::IOBuf* buf, nshead.magic_num = NSHEAD_MAGICNUM; snprintf(nshead.provider, sizeof(nshead.provider), "%s", PROVIDER); nshead.version = NSHEAD_VERSION; - nshead.body_len = PROTOBUF_BYTE_SIZE(pbreq); + nshead.body_len = get_protobuf_byte_size(pbreq); buf->append(&nshead, sizeof(nshead)); Span* span = ControllerPrivateAccessor(controller).span(); diff --git a/src/brpc/policy/sofa_pbrpc_protocol.cpp b/src/brpc/policy/sofa_pbrpc_protocol.cpp index 5f6125751c..2176b74c44 100644 --- a/src/brpc/policy/sofa_pbrpc_protocol.cpp +++ b/src/brpc/policy/sofa_pbrpc_protocol.cpp @@ -139,7 +139,7 @@ inline void PackSofaHeader(char* sofa_header, uint32_t meta_size, int body_size) static void SerializeSofaHeaderAndMeta( butil::IOBuf* out, const SofaRpcMeta& meta, int payload_size) { - const uint32_t meta_size = PROTOBUF_BYTE_SIZE(meta); + const uint32_t meta_size = get_protobuf_byte_size(meta); if (meta_size <= 232) { // most common cases char header_and_meta[24 + meta_size]; PackSofaHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/streaming_rpc_protocol.cpp b/src/brpc/policy/streaming_rpc_protocol.cpp index 2097b6f83d..8f88edc168 100644 --- a/src/brpc/policy/streaming_rpc_protocol.cpp +++ b/src/brpc/policy/streaming_rpc_protocol.cpp @@ -43,7 +43,7 @@ void PackStreamMessage(butil::IOBuf* out, const StreamFrameMeta &fm, const butil::IOBuf *data) { const uint32_t data_length = data ? data->length() : 0; - const uint32_t meta_length = PROTOBUF_BYTE_SIZE(fm); + const uint32_t meta_length = get_protobuf_byte_size(fm); char head[12]; uint32_t* dummy = (uint32_t*)head; // suppresses strict-alias warning *(uint32_t*)dummy = *(const uint32_t*)"STRM"; diff --git a/src/brpc/protocol.h b/src/brpc/protocol.h index f54dd5de4b..15f0b97014 100755 --- a/src/brpc/protocol.h +++ b/src/brpc/protocol.h @@ -58,12 +58,15 @@ DECLARE_bool(log_error_text); // Get the serialized byte size of the protobuf message, // different versions of protobuf have different methods - +// use template to avoid include `google/protobuf/message.h` +template +inline uint32_t get_protobuf_byte_size(const T& message) { #if GOOGLE_PROTOBUF_VERSION >= 3010000 -#define PROTOBUF_BYTE_SIZE(message) ((message).ByteSizeLong()) + return message.ByteSizeLong(); #else -#define PROTOBUF_BYTE_SIZE(message) (static_cast((message).ByteSize())) + return static_cast((message).ByteSize()); #endif +} // 3 steps to add a new Protocol: // Step1: Add a new ProtocolType in src/brpc/options.proto From d8eef06826a82065b5dbefbdb250c663309266fa Mon Sep 17 00:00:00 2001 From: yangzhg Date: Wed, 30 Mar 2022 12:30:27 +0800 Subject: [PATCH 4/4] change to camel case --- src/brpc/policy/baidu_rpc_protocol.cpp | 2 +- src/brpc/policy/hulu_pbrpc_protocol.cpp | 2 +- src/brpc/policy/public_pbrpc_protocol.cpp | 2 +- src/brpc/policy/sofa_pbrpc_protocol.cpp | 2 +- src/brpc/policy/streaming_rpc_protocol.cpp | 2 +- src/brpc/protocol.h | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/brpc/policy/baidu_rpc_protocol.cpp b/src/brpc/policy/baidu_rpc_protocol.cpp index 93775a9e7c..7b073143b7 100644 --- a/src/brpc/policy/baidu_rpc_protocol.cpp +++ b/src/brpc/policy/baidu_rpc_protocol.cpp @@ -69,7 +69,7 @@ inline void PackRpcHeader(char* rpc_header, uint32_t meta_size, int payload_size static void SerializeRpcHeaderAndMeta( butil::IOBuf* out, const RpcMeta& meta, int payload_size) { - const uint32_t meta_size = get_protobuf_byte_size(meta); + const uint32_t meta_size = GetProtobufByteSize(meta); if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackRpcHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/hulu_pbrpc_protocol.cpp b/src/brpc/policy/hulu_pbrpc_protocol.cpp index d789a152b0..5a31ae7230 100644 --- a/src/brpc/policy/hulu_pbrpc_protocol.cpp +++ b/src/brpc/policy/hulu_pbrpc_protocol.cpp @@ -152,7 +152,7 @@ inline void PackHuluHeader(char* hulu_header, uint32_t meta_size, int body_size) template static void SerializeHuluHeaderAndMeta( butil::IOBuf* out, const Meta& meta, int payload_size) { - const uint32_t meta_size = get_protobuf_byte_size(meta); + const uint32_t meta_size = GetProtobufByteSize(meta); if (meta_size <= 244) { // most common cases char header_and_meta[12 + meta_size]; PackHuluHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/public_pbrpc_protocol.cpp b/src/brpc/policy/public_pbrpc_protocol.cpp index 79e84bc6de..38a749dc72 100644 --- a/src/brpc/policy/public_pbrpc_protocol.cpp +++ b/src/brpc/policy/public_pbrpc_protocol.cpp @@ -266,7 +266,7 @@ void PackPublicPbrpcRequest(butil::IOBuf* buf, nshead.magic_num = NSHEAD_MAGICNUM; snprintf(nshead.provider, sizeof(nshead.provider), "%s", PROVIDER); nshead.version = NSHEAD_VERSION; - nshead.body_len = get_protobuf_byte_size(pbreq); + nshead.body_len = GetProtobufByteSize(pbreq); buf->append(&nshead, sizeof(nshead)); Span* span = ControllerPrivateAccessor(controller).span(); diff --git a/src/brpc/policy/sofa_pbrpc_protocol.cpp b/src/brpc/policy/sofa_pbrpc_protocol.cpp index 2176b74c44..f6ca32c26c 100644 --- a/src/brpc/policy/sofa_pbrpc_protocol.cpp +++ b/src/brpc/policy/sofa_pbrpc_protocol.cpp @@ -139,7 +139,7 @@ inline void PackSofaHeader(char* sofa_header, uint32_t meta_size, int body_size) static void SerializeSofaHeaderAndMeta( butil::IOBuf* out, const SofaRpcMeta& meta, int payload_size) { - const uint32_t meta_size = get_protobuf_byte_size(meta); + const uint32_t meta_size = GetProtobufByteSize(meta); if (meta_size <= 232) { // most common cases char header_and_meta[24 + meta_size]; PackSofaHeader(header_and_meta, meta_size, payload_size); diff --git a/src/brpc/policy/streaming_rpc_protocol.cpp b/src/brpc/policy/streaming_rpc_protocol.cpp index 8f88edc168..cd0e0fd3b2 100644 --- a/src/brpc/policy/streaming_rpc_protocol.cpp +++ b/src/brpc/policy/streaming_rpc_protocol.cpp @@ -43,7 +43,7 @@ void PackStreamMessage(butil::IOBuf* out, const StreamFrameMeta &fm, const butil::IOBuf *data) { const uint32_t data_length = data ? data->length() : 0; - const uint32_t meta_length = get_protobuf_byte_size(fm); + const uint32_t meta_length = GetProtobufByteSize(fm); char head[12]; uint32_t* dummy = (uint32_t*)head; // suppresses strict-alias warning *(uint32_t*)dummy = *(const uint32_t*)"STRM"; diff --git a/src/brpc/protocol.h b/src/brpc/protocol.h index 15f0b97014..0492d0b5f7 100755 --- a/src/brpc/protocol.h +++ b/src/brpc/protocol.h @@ -60,11 +60,11 @@ DECLARE_bool(log_error_text); // different versions of protobuf have different methods // use template to avoid include `google/protobuf/message.h` template -inline uint32_t get_protobuf_byte_size(const T& message) { +inline uint32_t GetProtobufByteSize(const T& message) { #if GOOGLE_PROTOBUF_VERSION >= 3010000 return message.ByteSizeLong(); #else - return static_cast((message).ByteSize()); + return static_cast(message.ByteSize()); #endif }