diff --git a/src/brpc/policy/baidu_rpc_protocol.cpp b/src/brpc/policy/baidu_rpc_protocol.cpp index 88197f679a..6977afd029 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 50660a0665..32114498ab 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 d1bc832232..b761e21214 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 27d8037208..66c4936b76 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";