MCPcopy Create free account
hub / github.com/apache/brpc / SerializeRpcHeaderAndMeta

Function SerializeRpcHeaderAndMeta

src/brpc/policy/baidu_rpc_protocol.cpp:83–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81}
82
83static void SerializeRpcHeaderAndMeta(
84 butil::IOBuf* out, const RpcMeta& meta, int payload_size) {
85 const uint32_t meta_size = GetProtobufByteSize(meta);
86 if (meta_size <= 244) { // most common cases
87 char header_and_meta[12 + meta_size];
88 PackRpcHeader(header_and_meta, meta_size, payload_size);
89 ::google::protobuf::io::ArrayOutputStream arr_out(header_and_meta + 12, meta_size);
90 ::google::protobuf::io::CodedOutputStream coded_out(&arr_out);
91 meta.SerializeWithCachedSizes(&coded_out); // not calling ByteSize again
92 CHECK(!coded_out.HadError());
93 CHECK_EQ(0, out->append(header_and_meta, sizeof(header_and_meta)));
94 } else {
95 char header[12];
96 PackRpcHeader(header, meta_size, payload_size);
97 CHECK_EQ(0, out->append(header, sizeof(header)));
98 butil::IOBufAsZeroCopyOutputStream buf_stream(out);
99 ::google::protobuf::io::CodedOutputStream coded_out(&buf_stream);
100 meta.SerializeWithCachedSizes(&coded_out);
101 CHECK(!coded_out.HadError());
102 }
103}
104
105ParseResult ParseRpcMessage(butil::IOBuf* source, Socket* socket,
106 bool /*read_eof*/, const void*) {

Callers 3

VerifyRpcRequestFunction · 0.85
PackRpcRequestFunction · 0.85

Calls 4

GetProtobufByteSizeFunction · 0.85
PackRpcHeaderFunction · 0.85
appendMethod · 0.45

Tested by

no test coverage detected