RTI Persistence Service  Version 5.3.0
 All Data Structures Files Functions Variables Groups Pages
HelloWorldPlugin.c

[$(NDDSHOME)/example/C/helloWorldPersistence/HelloWorldPlugin.h]

/*
WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
This file was generated from HelloWorld.idl using "rtiddsgen".
The rtiddsgen tool is part of the RTI Connext distribution.
For more information, type 'rtiddsgen -help' at a command shell
or consult the RTI Connext manual.
*/
#ifndef HelloWorldPlugin_1436885481_h
#define HelloWorldPlugin_1436885481_h
#include "HelloWorld.h"
struct RTICdrStream;
#ifndef pres_typePlugin_h
#include "pres/pres_typePlugin.h"
#endif
#if (defined(RTI_WIN32) || defined (RTI_WINCE)) && defined(NDDS_USER_DLL_EXPORT)
/* If the code is building on Windows, start exporting symbols.
*/
#undef NDDSUSERDllExport
#define NDDSUSERDllExport __declspec(dllexport)
#endif
#define HelloWorldPlugin_get_sample PRESTypePluginDefaultEndpointData_getSample
#define HelloWorldPlugin_get_buffer PRESTypePluginDefaultEndpointData_getBuffer
#define HelloWorldPlugin_return_buffer PRESTypePluginDefaultEndpointData_returnBuffer
#define HelloWorldPlugin_create_sample PRESTypePluginDefaultEndpointData_createSample
#define HelloWorldPlugin_destroy_sample PRESTypePluginDefaultEndpointData_deleteSample
/* --------------------------------------------------------------------------------------
Support functions:
* -------------------------------------------------------------------------------------- */
NDDSUSERDllExport extern HelloWorld*
HelloWorldPluginSupport_create_data_w_params(
const struct DDS_TypeAllocationParams_t * alloc_params);
NDDSUSERDllExport extern HelloWorld*
HelloWorldPluginSupport_create_data_ex(RTIBool allocate_pointers);
NDDSUSERDllExport extern HelloWorld*
HelloWorldPluginSupport_create_data(void);
NDDSUSERDllExport extern RTIBool
HelloWorldPluginSupport_copy_data(
HelloWorld *out,
const HelloWorld *in);
NDDSUSERDllExport extern void
HelloWorldPluginSupport_destroy_data_w_params(
HelloWorld *sample,
const struct DDS_TypeDeallocationParams_t * dealloc_params);
NDDSUSERDllExport extern void
HelloWorldPluginSupport_destroy_data_ex(
HelloWorld *sample,RTIBool deallocate_pointers);
NDDSUSERDllExport extern void
HelloWorldPluginSupport_destroy_data(
HelloWorld *sample);
NDDSUSERDllExport extern void
HelloWorldPluginSupport_print_data(
const HelloWorld *sample,
const char *desc,
unsigned int indent);
/* ----------------------------------------------------------------------------
Callback functions:
* ---------------------------------------------------------------------------- */
NDDSUSERDllExport extern PRESTypePluginParticipantData
HelloWorldPlugin_on_participant_attached(
void *registration_data,
const struct PRESTypePluginParticipantInfo *participant_info,
RTIBool top_level_registration,
void *container_plugin_context,
RTICdrTypeCode *typeCode);
NDDSUSERDllExport extern void
HelloWorldPlugin_on_participant_detached(
PRESTypePluginParticipantData participant_data);
NDDSUSERDllExport extern PRESTypePluginEndpointData
HelloWorldPlugin_on_endpoint_attached(
PRESTypePluginParticipantData participant_data,
const struct PRESTypePluginEndpointInfo *endpoint_info,
RTIBool top_level_registration,
void *container_plugin_context);
NDDSUSERDllExport extern void
HelloWorldPlugin_on_endpoint_detached(
PRESTypePluginEndpointData endpoint_data);
NDDSUSERDllExport extern void
HelloWorldPlugin_return_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
void *handle);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_copy_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *out,
const HelloWorld *in);
/* ----------------------------------------------------------------------------
(De)Serialize functions:
* ------------------------------------------------------------------------- */
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_serialize(
PRESTypePluginEndpointData endpoint_data,
const HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool serialize_encapsulation,
RTIEncapsulationId encapsulation_id,
RTIBool serialize_sample,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_deserialize_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_sample,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_serialize_to_cdr_buffer(
char * buffer,
unsigned int * length,
const HelloWorld *sample);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_deserialize(
PRESTypePluginEndpointData endpoint_data,
HelloWorld **sample,
RTIBool * drop_sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_sample,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_deserialize_from_cdr_buffer(
HelloWorld *sample,
const char * buffer,
unsigned int length);
NDDSUSERDllExport extern DDS_ReturnCode_t
HelloWorldPlugin_data_to_string(
const HelloWorld *sample,
char *str,
DDS_UnsignedLong *str_size,
const struct DDS_PrintFormatProperty *property);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_skip(
PRESTypePluginEndpointData endpoint_data,
struct RTICdrStream *stream,
RTIBool skip_encapsulation,
RTIBool skip_sample,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern unsigned int
HelloWorldPlugin_get_serialized_sample_max_size_ex(
PRESTypePluginEndpointData endpoint_data,
RTIBool * overflow,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment);
NDDSUSERDllExport extern unsigned int
HelloWorldPlugin_get_serialized_sample_max_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment);
NDDSUSERDllExport extern unsigned int
HelloWorldPlugin_get_serialized_sample_min_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment);
NDDSUSERDllExport extern unsigned int
HelloWorldPlugin_get_serialized_sample_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment,
const HelloWorld * sample);
/* --------------------------------------------------------------------------------------
Key Management functions:
* -------------------------------------------------------------------------------------- */
NDDSUSERDllExport extern PRESTypePluginKeyKind
HelloWorldPlugin_get_key_kind(void);
NDDSUSERDllExport extern unsigned int
HelloWorldPlugin_get_serialized_key_max_size_ex(
PRESTypePluginEndpointData endpoint_data,
RTIBool * overflow,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment);
NDDSUSERDllExport extern unsigned int
HelloWorldPlugin_get_serialized_key_max_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_serialize_key(
PRESTypePluginEndpointData endpoint_data,
const HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool serialize_encapsulation,
RTIEncapsulationId encapsulation_id,
RTIBool serialize_key,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_deserialize_key_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld * sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_key,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_deserialize_key(
PRESTypePluginEndpointData endpoint_data,
HelloWorld ** sample,
RTIBool * drop_sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_key,
void *endpoint_plugin_qos);
NDDSUSERDllExport extern RTIBool
HelloWorldPlugin_serialized_sample_to_key(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_key,
void *endpoint_plugin_qos);
/* Plugin Functions */
NDDSUSERDllExport extern struct PRESTypePlugin*
HelloWorldPlugin_new(void);
NDDSUSERDllExport extern void
HelloWorldPlugin_delete(struct PRESTypePlugin *);
#if (defined(RTI_WIN32) || defined (RTI_WINCE)) && defined(NDDS_USER_DLL_EXPORT)
/* If the code is building on Windows, stop exporting symbols.
*/
#undef NDDSUSERDllExport
#define NDDSUSERDllExport
#endif
#endif /* HelloWorldPlugin_1436885481_h */

[$(NDDSHOME)/example/C/helloWorldPersistence/HelloWorldPlugin.c]

/*
WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
This file was generated from HelloWorld.idl using "rtiddsgen".
The rtiddsgen tool is part of the RTI Connext distribution.
For more information, type 'rtiddsgen -help' at a command shell
or consult the RTI Connext manual.
*/
#include <string.h>
#ifndef ndds_c_h
#include "ndds/ndds_c.h"
#endif
#ifndef osapi_type_h
#include "osapi/osapi_type.h"
#endif
#ifndef osapi_heap_h
#include "osapi/osapi_heap.h"
#endif
#ifndef osapi_utility_h
#include "osapi/osapi_utility.h"
#endif
#ifndef cdr_type_h
#include "cdr/cdr_type.h"
#endif
#ifndef cdr_type_object_h
#include "cdr/cdr_typeObject.h"
#endif
#ifndef cdr_encapsulation_h
#include "cdr/cdr_encapsulation.h"
#endif
#ifndef cdr_stream_h
#include "cdr/cdr_stream.h"
#endif
#ifndef cdr_log_h
#include "cdr/cdr_log.h"
#endif
#ifndef pres_typePlugin_h
#include "pres/pres_typePlugin.h"
#endif
#define RTI_CDR_CURRENT_SUBMODULE RTI_CDR_SUBMODULE_MASK_STREAM
#include "HelloWorldPlugin.h"
/* ----------------------------------------------------------------------------
* Type HelloWorld
* -------------------------------------------------------------------------- */
/* -----------------------------------------------------------------------------
Support functions:
* -------------------------------------------------------------------------- */
HelloWorld*
HelloWorldPluginSupport_create_data_w_params(
const struct DDS_TypeAllocationParams_t * alloc_params)
{
HelloWorld *sample = NULL;
RTIOsapiHeap_allocateStructure(&(sample),HelloWorld);
if (sample == NULL) {
return NULL;
}
if (!HelloWorld_initialize_w_params(sample,alloc_params)) {
RTIOsapiHeap_freeStructure(sample);
sample=NULL;
}
return sample;
}
HelloWorld *
HelloWorldPluginSupport_create_data_ex(RTIBool allocate_pointers)
{
HelloWorld *sample = NULL;
RTIOsapiHeap_allocateStructure(&(sample),HelloWorld);
if(sample == NULL) {
return NULL;
}
if (!HelloWorld_initialize_ex(sample,allocate_pointers, RTI_TRUE)) {
RTIOsapiHeap_freeStructure(sample);
sample=NULL;
}
return sample;
}
HelloWorld *
HelloWorldPluginSupport_create_data(void)
{
return HelloWorldPluginSupport_create_data_ex(RTI_TRUE);
}
void
HelloWorldPluginSupport_destroy_data_w_params(
HelloWorld *sample,
const struct DDS_TypeDeallocationParams_t * dealloc_params) {
HelloWorld_finalize_w_params(sample,dealloc_params);
RTIOsapiHeap_freeStructure(sample);
sample=NULL;
}
void
HelloWorldPluginSupport_destroy_data_ex(
HelloWorld *sample,RTIBool deallocate_pointers) {
HelloWorld_finalize_ex(sample,deallocate_pointers);
RTIOsapiHeap_freeStructure(sample);
sample=NULL;
}
void
HelloWorldPluginSupport_destroy_data(
HelloWorld *sample) {
HelloWorldPluginSupport_destroy_data_ex(sample,RTI_TRUE);
}
RTIBool
HelloWorldPluginSupport_copy_data(
HelloWorld *dst,
const HelloWorld *src)
{
return HelloWorld_copy(dst,(const HelloWorld*) src);
}
void
HelloWorldPluginSupport_print_data(
const HelloWorld *sample,
const char *desc,
unsigned int indent_level)
{
RTICdrType_printIndent(indent_level);
if (desc != NULL) {
RTILog_debug("%s:\n", desc);
} else {
RTILog_debug("\n");
}
if (sample == NULL) {
RTILog_debug("NULL\n");
return;
}
RTICdrType_printLong(
&sample->data, "data", indent_level + 1);
}
/* ----------------------------------------------------------------------------
Callback functions:
* ---------------------------------------------------------------------------- */
PRESTypePluginParticipantData
HelloWorldPlugin_on_participant_attached(
void *registration_data,
const struct PRESTypePluginParticipantInfo *participant_info,
RTIBool top_level_registration,
void *container_plugin_context,
RTICdrTypeCode *type_code)
{
if (registration_data) {} /* To avoid warnings */
if (participant_info) {} /* To avoid warnings */
if (top_level_registration) {} /* To avoid warnings */
if (container_plugin_context) {} /* To avoid warnings */
if (type_code) {} /* To avoid warnings */
return PRESTypePluginDefaultParticipantData_new(participant_info);
}
void
HelloWorldPlugin_on_participant_detached(
PRESTypePluginParticipantData participant_data)
{
PRESTypePluginDefaultParticipantData_delete(participant_data);
}
PRESTypePluginEndpointData
HelloWorldPlugin_on_endpoint_attached(
PRESTypePluginParticipantData participant_data,
const struct PRESTypePluginEndpointInfo *endpoint_info,
RTIBool top_level_registration,
void *containerPluginContext)
{
PRESTypePluginEndpointData epd = NULL;
unsigned int serializedSampleMaxSize;
if (top_level_registration) {} /* To avoid warnings */
if (containerPluginContext) {} /* To avoid warnings */
epd = PRESTypePluginDefaultEndpointData_new(
participant_data,
endpoint_info,
(PRESTypePluginDefaultEndpointDataCreateSampleFunction)
HelloWorldPluginSupport_create_data,
(PRESTypePluginDefaultEndpointDataDestroySampleFunction)
HelloWorldPluginSupport_destroy_data,
NULL , NULL );
if (epd == NULL) {
return NULL;
}
if (endpoint_info->endpointKind == PRES_TYPEPLUGIN_ENDPOINT_WRITER) {
serializedSampleMaxSize = HelloWorldPlugin_get_serialized_sample_max_size(
epd,RTI_FALSE,RTI_CDR_ENCAPSULATION_ID_CDR_BE,0);
PRESTypePluginDefaultEndpointData_setMaxSizeSerializedSample(epd, serializedSampleMaxSize);
if (PRESTypePluginDefaultEndpointData_createWriterPool(
epd,
endpoint_info,
(PRESTypePluginGetSerializedSampleMaxSizeFunction)
HelloWorldPlugin_get_serialized_sample_max_size, epd,
(PRESTypePluginGetSerializedSampleSizeFunction)
HelloWorldPlugin_get_serialized_sample_size,
epd) == RTI_FALSE) {
PRESTypePluginDefaultEndpointData_delete(epd);
return NULL;
}
}
return epd;
}
void
HelloWorldPlugin_on_endpoint_detached(
PRESTypePluginEndpointData endpoint_data)
{
PRESTypePluginDefaultEndpointData_delete(endpoint_data);
}
void
HelloWorldPlugin_return_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
void *handle)
{
HelloWorld_finalize_optional_members(sample, RTI_TRUE);
PRESTypePluginDefaultEndpointData_returnSample(
endpoint_data, sample, handle);
}
RTIBool
HelloWorldPlugin_copy_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *dst,
const HelloWorld *src)
{
if (endpoint_data) {} /* To avoid warnings */
return HelloWorldPluginSupport_copy_data(dst,src);
}
/* ----------------------------------------------------------------------------
(De)Serialize functions:
* ------------------------------------------------------------------------- */
unsigned int
HelloWorldPlugin_get_serialized_sample_max_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment);
RTIBool
HelloWorldPlugin_serialize(
PRESTypePluginEndpointData endpoint_data,
const HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool serialize_encapsulation,
RTIEncapsulationId encapsulation_id,
RTIBool serialize_sample,
void *endpoint_plugin_qos)
{
char * position = NULL;
RTIBool retval = RTI_TRUE;
if (endpoint_data) {} /* To avoid warnings */
if (endpoint_plugin_qos) {} /* To avoid warnings */
if(serialize_encapsulation) {
if (!RTICdrStream_serializeAndSetCdrEncapsulation(stream , encapsulation_id)) {
return RTI_FALSE;
}
position = RTICdrStream_resetAlignment(stream);
}
if(serialize_sample) {
if (!RTICdrStream_serializeLong(
stream, &sample->data)) {
return RTI_FALSE;
}
}
if(serialize_encapsulation) {
RTICdrStream_restoreAlignment(stream,position);
}
return retval;
}
RTIBool
HelloWorldPlugin_deserialize_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_sample,
void *endpoint_plugin_qos)
{
char * position = NULL;
RTIBool done = RTI_FALSE;
if (endpoint_data) {} /* To avoid warnings */
if (endpoint_plugin_qos) {} /* To avoid warnings */
if(deserialize_encapsulation) {
if (!RTICdrStream_deserializeAndSetCdrEncapsulation(stream)) {
return RTI_FALSE;
}
position = RTICdrStream_resetAlignment(stream);
}
if(deserialize_sample) {
HelloWorld_initialize_ex(sample, RTI_FALSE, RTI_FALSE);
if (!RTICdrStream_deserializeLong(
stream, &sample->data)) {
goto fin;
}
}
done = RTI_TRUE;
fin:
if (done != RTI_TRUE &&
RTICdrStream_getRemainder(stream) >=
RTI_CDR_PARAMETER_HEADER_ALIGNMENT) {
return RTI_FALSE;
}
if(deserialize_encapsulation) {
RTICdrStream_restoreAlignment(stream,position);
}
return RTI_TRUE;
}
RTIBool
HelloWorldPlugin_serialize_to_cdr_buffer(
char * buffer,
unsigned int * length,
const HelloWorld *sample)
{
struct RTICdrStream stream;
struct PRESTypePluginDefaultEndpointData epd;
RTIBool result;
if (length == NULL) {
return RTI_FALSE;
}
epd._maxSizeSerializedSample =
HelloWorldPlugin_get_serialized_sample_max_size(
NULL, RTI_TRUE, RTICdrEncapsulation_getNativeCdrEncapsulationId(), 0);
if (buffer == NULL) {
*length =
HelloWorldPlugin_get_serialized_sample_size(
(PRESTypePluginEndpointData)&epd,
RTI_TRUE,
RTICdrEncapsulation_getNativeCdrEncapsulationId(),
0,
sample);
if (*length == 0) {
return RTI_FALSE;
}
return RTI_TRUE;
}
RTICdrStream_init(&stream);
RTICdrStream_set(&stream, (char *)buffer, *length);
result = HelloWorldPlugin_serialize(
(PRESTypePluginEndpointData)&epd, sample, &stream,
RTI_TRUE, RTICdrEncapsulation_getNativeCdrEncapsulationId(),
RTI_TRUE, NULL);
*length = RTICdrStream_getCurrentPositionOffset(&stream);
return result;
}
RTIBool
HelloWorldPlugin_deserialize_from_cdr_buffer(
HelloWorld *sample,
const char * buffer,
unsigned int length)
{
struct RTICdrStream stream;
RTICdrStream_init(&stream);
RTICdrStream_set(&stream, (char *)buffer, length);
HelloWorld_finalize_optional_members(sample, RTI_TRUE);
return HelloWorldPlugin_deserialize_sample(
NULL, sample,
&stream, RTI_TRUE, RTI_TRUE,
NULL);
}
DDS_ReturnCode_t
HelloWorldPlugin_data_to_string(
const HelloWorld *sample,
char *str,
DDS_UnsignedLong *str_size,
const struct DDS_PrintFormatProperty *property)
{
DDS_DynamicData *data = NULL;
char *buffer = NULL;
unsigned int length = 0;
struct DDS_PrintFormat printFormat;
DDS_ReturnCode_t retCode = DDS_RETCODE_ERROR;
if (sample == NULL) {
return DDS_RETCODE_BAD_PARAMETER;
}
if (str_size == NULL) {
return DDS_RETCODE_BAD_PARAMETER;
}
if (property == NULL) {
return DDS_RETCODE_BAD_PARAMETER;
}
if (!HelloWorldPlugin_serialize_to_cdr_buffer(
NULL,
&length,
sample)) {
return DDS_RETCODE_ERROR;
}
RTIOsapiHeap_allocateBuffer(&buffer, length, RTI_OSAPI_ALIGNMENT_DEFAULT);
if (buffer == NULL) {
return DDS_RETCODE_ERROR;
}
if (!HelloWorldPlugin_serialize_to_cdr_buffer(
buffer,
&length,
sample)) {
RTIOsapiHeap_freeBuffer(buffer);
return DDS_RETCODE_ERROR;
}
data = DDS_DynamicData_new(
HelloWorld_get_typecode(),
&DDS_DYNAMIC_DATA_PROPERTY_DEFAULT);
if (data == NULL) {
RTIOsapiHeap_freeBuffer(buffer);
return DDS_RETCODE_ERROR;
}
retCode = DDS_DynamicData_from_cdr_buffer(data, buffer, length);
if (retCode != DDS_RETCODE_OK) {
RTIOsapiHeap_freeBuffer(buffer);
DDS_DynamicData_delete(data);
return retCode;
}
retCode = DDS_PrintFormatProperty_to_print_format(
property,
&printFormat);
if (retCode != DDS_RETCODE_OK) {
RTIOsapiHeap_freeBuffer(buffer);
DDS_DynamicData_delete(data);
return retCode;
}
retCode = DDS_DynamicDataFormatter_to_string_w_format(
data,
str,
str_size,
&printFormat);
if (retCode != DDS_RETCODE_OK) {
RTIOsapiHeap_freeBuffer(buffer);
DDS_DynamicData_delete(data);
return retCode;
}
RTIOsapiHeap_freeBuffer(buffer);
DDS_DynamicData_delete(data);
return DDS_RETCODE_OK;
}
RTIBool
HelloWorldPlugin_deserialize(
PRESTypePluginEndpointData endpoint_data,
HelloWorld **sample,
RTIBool * drop_sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_sample,
void *endpoint_plugin_qos)
{
RTIBool result;
const char *METHOD_NAME = "HelloWorldPlugin_deserialize";
if (drop_sample) {} /* To avoid warnings */
stream->_xTypesState.unassignable = RTI_FALSE;
result= HelloWorldPlugin_deserialize_sample(
endpoint_data, (sample != NULL)?*sample:NULL,
stream, deserialize_encapsulation, deserialize_sample,
endpoint_plugin_qos);
if (result) {
if (stream->_xTypesState.unassignable) {
result = RTI_FALSE;
}
}
if (!result && stream->_xTypesState.unassignable ) {
RTICdrLog_exception(
METHOD_NAME,
&RTI_CDR_LOG_UNASSIGNABLE_SAMPLE_OF_TYPE_s,
"HelloWorld");
}
return result;
}
RTIBool HelloWorldPlugin_skip(
PRESTypePluginEndpointData endpoint_data,
struct RTICdrStream *stream,
RTIBool skip_encapsulation,
RTIBool skip_sample,
void *endpoint_plugin_qos)
{
char * position = NULL;
RTIBool done = RTI_FALSE;
if (endpoint_data) {} /* To avoid warnings */
if (endpoint_plugin_qos) {} /* To avoid warnings */
if(skip_encapsulation) {
if (!RTICdrStream_skipEncapsulation(stream)) {
return RTI_FALSE;
}
position = RTICdrStream_resetAlignment(stream);
}
if (skip_sample) {
if (!RTICdrStream_skipLong (stream)) {
goto fin;
}
}
done = RTI_TRUE;
fin:
if (done != RTI_TRUE &&
RTICdrStream_getRemainder(stream) >=
RTI_CDR_PARAMETER_HEADER_ALIGNMENT) {
return RTI_FALSE;
}
if(skip_encapsulation) {
RTICdrStream_restoreAlignment(stream,position);
}
return RTI_TRUE;
}
unsigned int
HelloWorldPlugin_get_serialized_sample_max_size_ex(
PRESTypePluginEndpointData endpoint_data,
RTIBool * overflow,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment)
{
unsigned int initial_alignment = current_alignment;
unsigned int encapsulation_size = current_alignment;
if (endpoint_data) {} /* To avoid warnings */
if (overflow) {} /* To avoid warnings */
if (include_encapsulation) {
if (!RTICdrEncapsulation_validEncapsulationId(encapsulation_id)) {
return 1;
}
RTICdrStream_getEncapsulationSize(encapsulation_size);
encapsulation_size -= current_alignment;
current_alignment = 0;
initial_alignment = 0;
}
current_alignment +=RTICdrType_getLongMaxSizeSerialized(
current_alignment);
if (include_encapsulation) {
current_alignment += encapsulation_size;
}
return current_alignment - initial_alignment;
}
unsigned int
HelloWorldPlugin_get_serialized_sample_max_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment)
{
unsigned int size;
RTIBool overflow = RTI_FALSE;
size = HelloWorldPlugin_get_serialized_sample_max_size_ex(
endpoint_data,&overflow,include_encapsulation,encapsulation_id,current_alignment);
if (overflow) {
size = RTI_CDR_MAX_SERIALIZED_SIZE;
}
return size;
}
unsigned int
HelloWorldPlugin_get_serialized_sample_min_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment)
{
unsigned int initial_alignment = current_alignment;
unsigned int encapsulation_size = current_alignment;
if (endpoint_data) {} /* To avoid warnings */
if (include_encapsulation) {
if (!RTICdrEncapsulation_validEncapsulationId(encapsulation_id)) {
return 1;
}
RTICdrStream_getEncapsulationSize(encapsulation_size);
encapsulation_size -= current_alignment;
current_alignment = 0;
initial_alignment = 0;
}
current_alignment +=RTICdrType_getLongMaxSizeSerialized(
current_alignment);
if (include_encapsulation) {
current_alignment += encapsulation_size;
}
return current_alignment - initial_alignment;
}
/* Returns the size of the sample in its serialized form (in bytes).
* It can also be an estimation in excess of the real buffer needed
* during a call to the serialize() function.
* The value reported does not have to include the space for the
* encapsulation flags.
*/
unsigned int
HelloWorldPlugin_get_serialized_sample_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment,
const HelloWorld * sample)
{
unsigned int initial_alignment = current_alignment;
unsigned int encapsulation_size = current_alignment;
struct PRESTypePluginDefaultEndpointData epd;
if (sample==NULL) {
return 0;
}
if (endpoint_data == NULL) {
endpoint_data = (PRESTypePluginEndpointData) &epd;
PRESTypePluginDefaultEndpointData_setBaseAlignment(
endpoint_data,
current_alignment);
}
if (include_encapsulation) {
if (!RTICdrEncapsulation_validEncapsulationId(encapsulation_id)) {
return 1;
}
RTICdrStream_getEncapsulationSize(encapsulation_size);
encapsulation_size -= current_alignment;
current_alignment = 0;
initial_alignment = 0;
PRESTypePluginDefaultEndpointData_setBaseAlignment(
endpoint_data,
current_alignment);
}
current_alignment += RTICdrType_getLongMaxSizeSerialized(
PRESTypePluginDefaultEndpointData_getAlignment(
endpoint_data, current_alignment));
if (include_encapsulation) {
current_alignment += encapsulation_size;
}
return current_alignment - initial_alignment;
}
/* --------------------------------------------------------------------------------------
Key Management functions:
* -------------------------------------------------------------------------------------- */
PRESTypePluginKeyKind
HelloWorldPlugin_get_key_kind(void)
{
return PRES_TYPEPLUGIN_NO_KEY;
}
RTIBool
HelloWorldPlugin_serialize_key(
PRESTypePluginEndpointData endpoint_data,
const HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool serialize_encapsulation,
RTIEncapsulationId encapsulation_id,
RTIBool serialize_key,
void *endpoint_plugin_qos)
{
char * position = NULL;
if(serialize_encapsulation) {
if (!RTICdrStream_serializeAndSetCdrEncapsulation(stream , encapsulation_id)) {
return RTI_FALSE;
}
position = RTICdrStream_resetAlignment(stream);
}
if(serialize_key) {
if (!HelloWorldPlugin_serialize(
endpoint_data,
sample,
stream,
RTI_FALSE, encapsulation_id,
RTI_TRUE,
endpoint_plugin_qos)) {
return RTI_FALSE;
}
}
if(serialize_encapsulation) {
RTICdrStream_restoreAlignment(stream,position);
}
return RTI_TRUE;
}
RTIBool HelloWorldPlugin_deserialize_key_sample(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_key,
void *endpoint_plugin_qos)
{
char * position = NULL;
if (endpoint_data) {} /* To avoid warnings */
if (endpoint_plugin_qos) {} /* To avoid warnings */
if(deserialize_encapsulation) {
if (!RTICdrStream_deserializeAndSetCdrEncapsulation(stream)) {
return RTI_FALSE;
}
position = RTICdrStream_resetAlignment(stream);
}
if (deserialize_key) {
if (!HelloWorldPlugin_deserialize_sample(
endpoint_data, sample, stream,
RTI_FALSE, RTI_TRUE,
endpoint_plugin_qos)) {
return RTI_FALSE;
}
}
if(deserialize_encapsulation) {
RTICdrStream_restoreAlignment(stream,position);
}
return RTI_TRUE;
}
RTIBool HelloWorldPlugin_deserialize_key(
PRESTypePluginEndpointData endpoint_data,
HelloWorld **sample,
RTIBool * drop_sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_key,
void *endpoint_plugin_qos)
{
RTIBool result;
if (drop_sample) {} /* To avoid warnings */
stream->_xTypesState.unassignable = RTI_FALSE;
result= HelloWorldPlugin_deserialize_key_sample(
endpoint_data, (sample != NULL)?*sample:NULL, stream,
deserialize_encapsulation, deserialize_key, endpoint_plugin_qos);
if (result) {
if (stream->_xTypesState.unassignable) {
result = RTI_FALSE;
}
}
return result;
}
unsigned int
HelloWorldPlugin_get_serialized_key_max_size_ex(
PRESTypePluginEndpointData endpoint_data,
RTIBool * overflow,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment)
{
unsigned int initial_alignment = current_alignment;
unsigned int encapsulation_size = current_alignment;
if (endpoint_data) {} /* To avoid warnings */
if (overflow) {} /* To avoid warnings */
if (include_encapsulation) {
if (!RTICdrEncapsulation_validEncapsulationId(encapsulation_id)) {
return 1;
}
RTICdrStream_getEncapsulationSize(encapsulation_size);
encapsulation_size -= current_alignment;
current_alignment = 0;
initial_alignment = 0;
}
current_alignment += HelloWorldPlugin_get_serialized_sample_max_size_ex(
endpoint_data, overflow,RTI_FALSE, encapsulation_id, current_alignment);
if (include_encapsulation) {
current_alignment += encapsulation_size;
}
return current_alignment - initial_alignment;
}
unsigned int
HelloWorldPlugin_get_serialized_key_max_size(
PRESTypePluginEndpointData endpoint_data,
RTIBool include_encapsulation,
RTIEncapsulationId encapsulation_id,
unsigned int current_alignment)
{
unsigned int size;
RTIBool overflow = RTI_FALSE;
size = HelloWorldPlugin_get_serialized_key_max_size_ex(
endpoint_data,&overflow,include_encapsulation,encapsulation_id,current_alignment);
if (overflow) {
size = RTI_CDR_MAX_SERIALIZED_SIZE;
}
return size;
}
RTIBool
HelloWorldPlugin_serialized_sample_to_key(
PRESTypePluginEndpointData endpoint_data,
HelloWorld *sample,
struct RTICdrStream *stream,
RTIBool deserialize_encapsulation,
RTIBool deserialize_key,
void *endpoint_plugin_qos)
{
char * position = NULL;
RTIBool done = RTI_FALSE;
RTIBool error = RTI_FALSE;
if (stream == NULL) {
error = RTI_TRUE;
goto fin;
}
if(deserialize_encapsulation) {
if (!RTICdrStream_deserializeAndSetCdrEncapsulation(stream)) {
return RTI_FALSE;
}
position = RTICdrStream_resetAlignment(stream);
}
if (deserialize_key) {
if (!HelloWorldPlugin_deserialize_sample(
endpoint_data, sample, stream, RTI_FALSE,
RTI_TRUE, endpoint_plugin_qos)) {
return RTI_FALSE;
}
}
done = RTI_TRUE;
fin:
if(!error) {
if (done != RTI_TRUE &&
RTICdrStream_getRemainder(stream) >=
RTI_CDR_PARAMETER_HEADER_ALIGNMENT) {
return RTI_FALSE;
}
} else {
return RTI_FALSE;
}
if(deserialize_encapsulation) {
RTICdrStream_restoreAlignment(stream,position);
}
return RTI_TRUE;
}
/* ------------------------------------------------------------------------
* Plug-in Installation Methods
* ------------------------------------------------------------------------ */
struct PRESTypePlugin *HelloWorldPlugin_new(void)
{
struct PRESTypePlugin *plugin = NULL;
const struct PRESTypePluginVersion PLUGIN_VERSION =
PRES_TYPE_PLUGIN_VERSION_2_0;
RTIOsapiHeap_allocateStructure(
&plugin, struct PRESTypePlugin);
if (plugin == NULL) {
return NULL;
}
plugin->version = PLUGIN_VERSION;
/* set up parent's function pointers */
plugin->onParticipantAttached =
(PRESTypePluginOnParticipantAttachedCallback)
HelloWorldPlugin_on_participant_attached;
plugin->onParticipantDetached =
(PRESTypePluginOnParticipantDetachedCallback)
HelloWorldPlugin_on_participant_detached;
plugin->onEndpointAttached =
(PRESTypePluginOnEndpointAttachedCallback)
HelloWorldPlugin_on_endpoint_attached;
plugin->onEndpointDetached =
(PRESTypePluginOnEndpointDetachedCallback)
HelloWorldPlugin_on_endpoint_detached;
plugin->copySampleFnc =
(PRESTypePluginCopySampleFunction)
HelloWorldPlugin_copy_sample;
plugin->createSampleFnc =
(PRESTypePluginCreateSampleFunction)
HelloWorldPlugin_create_sample;
plugin->destroySampleFnc =
(PRESTypePluginDestroySampleFunction)
HelloWorldPlugin_destroy_sample;
plugin->serializeFnc =
(PRESTypePluginSerializeFunction)
HelloWorldPlugin_serialize;
plugin->deserializeFnc =
(PRESTypePluginDeserializeFunction)
HelloWorldPlugin_deserialize;
plugin->getSerializedSampleMaxSizeFnc =
(PRESTypePluginGetSerializedSampleMaxSizeFunction)
HelloWorldPlugin_get_serialized_sample_max_size;
plugin->getSerializedSampleMinSizeFnc =
(PRESTypePluginGetSerializedSampleMinSizeFunction)
HelloWorldPlugin_get_serialized_sample_min_size;
plugin->getSampleFnc =
(PRESTypePluginGetSampleFunction)
HelloWorldPlugin_get_sample;
plugin->returnSampleFnc =
(PRESTypePluginReturnSampleFunction)
HelloWorldPlugin_return_sample;
plugin->getKeyKindFnc =
(PRESTypePluginGetKeyKindFunction)
HelloWorldPlugin_get_key_kind;
/* These functions are only used for keyed types. As this is not a keyed
type they are all set to NULL
*/
plugin->serializeKeyFnc = NULL ;
plugin->deserializeKeyFnc = NULL;
plugin->getKeyFnc = NULL;
plugin->returnKeyFnc = NULL;
plugin->instanceToKeyFnc = NULL;
plugin->keyToInstanceFnc = NULL;
plugin->getSerializedKeyMaxSizeFnc = NULL;
plugin->instanceToKeyHashFnc = NULL;
plugin->serializedSampleToKeyHashFnc = NULL;
plugin->serializedKeyToKeyHashFnc = NULL;
plugin->typeCode = (struct RTICdrTypeCode *)HelloWorld_get_typecode();
plugin->languageKind = PRES_TYPEPLUGIN_DDS_TYPE;
/* Serialized buffer */
plugin->getBuffer =
(PRESTypePluginGetBufferFunction)
HelloWorldPlugin_get_buffer;
plugin->returnBuffer =
(PRESTypePluginReturnBufferFunction)
HelloWorldPlugin_return_buffer;
plugin->getSerializedSampleSizeFnc =
(PRESTypePluginGetSerializedSampleSizeFunction)
HelloWorldPlugin_get_serialized_sample_size;
plugin->endpointTypeName = HelloWorldTYPENAME;
return plugin;
}
void
HelloWorldPlugin_delete(struct PRESTypePlugin *plugin)
{
RTIOsapiHeap_freeStructure(plugin);
}
#undef RTI_CDR_CURRENT_SUBMODULE

RTI Persistence Service Version 5.3.0 Copyright © Sun Jun 25 2017 Real-Time Innovations, Inc