Skip to content
Permalink
Browse files
use method instead of macro
  • Loading branch information
yangzhg committed Mar 30, 2022
1 parent 0c6135f commit 9e61cae548c723eb3d22fd378f7f9c1f55321ce5
Showing 6 changed files with 11 additions and 8 deletions.
@@ -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);
@@ -152,7 +152,7 @@ inline void PackHuluHeader(char* hulu_header, uint32_t meta_size, int body_size)
template <typename Meta>
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);
@@ -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();
@@ -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);
@@ -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";
@@ -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<typename T>
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<uint32_t>((message).ByteSize()))
return static_cast<uint32_t>((message).ByteSize());
#endif
}

// 3 steps to add a new Protocol:
// Step1: Add a new ProtocolType in src/brpc/options.proto

0 comments on commit 9e61cae

Please sign in to comment.