template <class Message, class UnusedButHereForPartialTemplateSpecialization = void>
class SerializationTraits
Defines how to serialize and deserialize some type.
Used for hooking different message serialization API's into GRPC.
Each SerializationTraits
<Message
> implementation must provide the
following functions:
1. static Status Serialize(const Message
&
msg,
ByteBuffer* buffer,
bool* own_buffer);
OR
static Status Serialize(const Message
&
msg,
grpc_byte_buffer** buffer,
bool* own_buffer);
The former is preferred; the latter is deprecated
2. static Status Deserialize(ByteBuffer* buffer,
Message* msg);
OR
static Status Deserialize(grpc_byte_buffer* buffer,
Message* msg);
The former is preferred; the latter is deprecated
Serialize is required to convert message to a ByteBuffer, and
return that byte buffer through *buffer. *own_buffer should
be set to true if the caller owns said byte buffer, or false if
ownership is retained elsewhere.
Deserialize is required to convert buffer into the message stored at
msg. max_receive_message_size is passed in as a bound on the maximum
number of message bytes Deserialize should accept.
Both functions return a Status, allowing them to explain what went
wrong if required.