RTI Connext C API  Version 5.2.0
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
HelloWorldPlugin.c

RTI Connext Implementation Support

Files generated by rtiddsgen that provided methods for type specific serialization and deserialization, to support the RTI Connext implementation.

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_1436885487_h
#define HelloWorldPlugin_1436885487_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 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_1436885487_h */

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 pres_typePlugin_h
#include "pres/pres_typePlugin.h"
#endif
#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) {
if (!HelloWorld_initialize_w_params(sample,alloc_params)) {
RTIOsapiHeap_freeStructure(sample);
return NULL;
}
}
return sample;
}
HelloWorld *
HelloWorldPluginSupport_create_data_ex(RTIBool allocate_pointers){
HelloWorld *sample = NULL;
RTIOsapiHeap_allocateStructure(
&sample, HelloWorld);
if(sample != NULL) {
if (!HelloWorld_initialize_ex(sample,allocate_pointers, RTI_TRUE)) {
RTIOsapiHeap_freeStructure(sample);
return 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);
}
void
HelloWorldPluginSupport_destroy_data_ex(
HelloWorld *sample,RTIBool deallocate_pointers) {
HelloWorld_finalize_ex(sample,deallocate_pointers);
RTIOsapiHeap_freeStructure(sample);
}
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,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;
}
if (sample->msg==NULL) {
RTICdrType_printString(
NULL,"msg", indent_level + 1);
} else {
RTICdrType_printString(
sample->msg,"msg", 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_serializeString(
stream, sample->msg, (128) + 1)) {
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_deserializeStringEx(
stream,&sample->msg, (128) + 1, RTI_FALSE)) {
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, RTI_CDR_ENCAPSULATION_ID_CDR_NATIVE, 0);
if (buffer == NULL) {
*length =
HelloWorldPlugin_get_serialized_sample_size(
(PRESTypePluginEndpointData)&epd,
RTI_TRUE,
RTI_CDR_ENCAPSULATION_ID_CDR_NATIVE,
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, RTI_CDR_ENCAPSULATION_ID_CDR_NATIVE,
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);
return HelloWorldPlugin_deserialize_sample(
NULL, sample,
&stream, RTI_TRUE, RTI_TRUE,
NULL);
}
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;
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;
}
}
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_skipString (stream, (128)+1)) {
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 (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_getStringMaxSizeSerialized(
current_alignment, (128)+1);
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_getStringMaxSizeSerialized(
current_alignment, 1);
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;
if (endpoint_data) {} /* To avoid warnings */
if (sample==NULL) {
return 0;
}
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_getStringSerializedSize(
current_alignment, sample->msg);
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 (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_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 (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 error;
}
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);
}

RTI Connext C API Version 5.2.0 Copyright © Sun Jun 21 2015 Real-Time Innovations, Inc