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);
}