MCPcopy Create free account
hub / github.com/apache/impala / SerializeHeader

Function SerializeHeader

be/src/kudu/rpc/serialization.cc:85–113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83}
84
85void SerializeHeader(const MessageLite& header,
86 size_t param_len,
87 faststring* header_buf) {
88
89 CHECK(header.IsInitialized())
90 << "RPC header missing fields: " << header.InitializationErrorString();
91
92 // Compute all the lengths for the packet.
93 size_t header_pb_len = header.ByteSizeLong();
94 size_t header_tot_len = kMsgLengthPrefixLength // Int prefix for the total length.
95 + CodedOutputStream::VarintSize32(header_pb_len) // Varint delimiter for header PB.
96 + header_pb_len; // Length for the header PB itself.
97 size_t total_size = header_tot_len + param_len;
98
99 header_buf->resize(header_tot_len);
100 uint8_t* dst = header_buf->data();
101
102 // 1. The length for the whole request, not including the 4-byte
103 // length prefix.
104 NetworkByteOrder::Store32(dst, total_size - kMsgLengthPrefixLength);
105 dst += sizeof(uint32_t);
106
107 // 2. The varint-prefixed RequestHeader PB
108 dst = CodedOutputStream::WriteVarint32ToArray(header_pb_len, dst);
109 dst = header.SerializeWithCachedSizesToArray(dst);
110
111 // We should have used the whole buffer we allocated.
112 CHECK_EQ(dst, header_buf->data() + header_tot_len);
113}
114
115Status ParseMessage(const Slice& buf,
116 MessageLite* parsed_header,

Callers 3

SerializeToMethod · 0.85

Calls 3

resizeMethod · 0.80
IsInitializedMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected