2 min read

Encoding payloads with Protobuf

Learn how IceRPC + Protobuf formats the payloads of requests and responses.

The Protocol Buffers Encoding specifies how to encode or decode Protobuf messages to or from a stream of bytes.

However, this specification is silent on how Protobuf RPC methods frame their input and output messages. As a result, an RPC framework that uses Protobuf needs to fill in this blank and describe what the payloads of its requests and responses look like with Protobuf.

The IceRPC + Protobuf integration adopts the framing used by the gRPC protocol: a Protobuf input or output message is encoded as a Length-Prefixed-Message inside a request or response payload:

  • the first byte (Compressed-Flag) can be 0 or 1 (not compressed or compressed)
  • the next 4 bytes (Message-Length) hold the length of the Protobuf-encoded message as an unsigned integer (big-endian ordering)
  • the following bytes are the Protobuf-encoded message

It's a simple and uniform framing. IceRPC + Protobuf does not currently provide support for gRPC-style compression (Compress-Flag set to 1) so Compress-Flag is always set to 0.

Was this page helpful?

CookiesYour privacy
This website uses cookies to analyze traffic and improve your experience.
By clicking "Accept," you consent to the use of these cookies. You can learn more about our cookies policy in our Privacy Policy.