RhpAddress evStartSerialize(struct RiCEvent* const ev, const RhpAddress
buffer, RhpPositive bufferSize, RhpPositive* resultBufferSize);
返回值 - 这是指向序列化事件的指针
ev - 这是指向要序列化的事件的指针
buffer - 这是一个局部缓冲区,可用于存储序列化事件(用户可以改为分配他们自己的缓冲区)
bufferSize - 参数 buffer 的大小(以字节计)
resultBufferSize - 这是一个指针,用于存储所返回的序列化事件的大小
RiCEvent* evStartUnserialize(RhpAddress const serializedBuffer, RhpPositive serializedBufferSize);
返回值 - 这是指向反序列化事件的指针
serializedBuffer - 这是指向序列化缓冲区的指针
serializedBufferSize - 参数 serializedBuffer 的大小
此示例引用了事件 evStart,此事件的定义如下所示:
struct evStart {
RiCEvent ric_event;
/*** User explicit entries ***/
char* msg;
};
RhpAddress evStartSerialize(struct RiCEvent* const ev, const RhpAddress
buffer, RhpPositive bufferSize, RhpPositive* resultBufferSize)
{
evStart* castedEv = (evStart*)ev;
RhpPositive msgLength = strlen(castedEv->msg);
/* Testing the size of the message parameter against the size of local
buffer */
if (bufferSize <= msgLength)
{
/* buffer too small - serialization is aborted */
return NULL;
}
/* copy the message string + the null terminating */
memcpy(buffer, castedEv->msg, msgLength + 1);
*resultBufferSize = msgLength + 1;
return buffer;
}
以下函数使用名为 receivedBuffer 的局部缓冲区来存储作为参数传递的事件 evStart 的字符串。
RiCEvent* evStartUnserialize(RhpAddress const serializedBuffer,
RhpPositive serializedBufferSize) {
/* copy the message to a local buffer */
memcpy(receivedBuffer, serializedBuffer, serializedBufferSize);
return (RiCEvent*)RiC_Create_evStart(receivedBuffer);
}