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