/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */ /* * @(#)pres_liveliness.h generated by: makeheader Tue Apr 7 22:56:13 2026 * * built from: liveliness.ifc */ #ifndef pres_liveliness_h #define pres_liveliness_h #ifndef pres_dll_h #include "pres/pres_dll.h" #endif #ifndef osapi_type_h #include "osapi/osapi_type.h" #endif #ifndef reda_fastBuffer_h #include "reda/reda_fastBuffer.h" #endif #ifndef cdr_stream_h #include "cdr/cdr_stream.h" #endif #ifndef pres_common_h #include "pres/pres_common.h" #endif #ifndef cdr_typeCode_h #include "cdr/cdr_typeCode.h" #endif #ifndef pres_typePlugin_h #include "pres/pres_typePlugin.h" #endif #ifndef pres_psService_h #include "pres/pres_psService.h" #endif #ifdef __cplusplus extern "C" { #endif /*e \ingroup PRESInterParticipantModule Name of type used for liveliness topic. */ #define PRES_INTER_PARTICIPANT_TYPE_PARAMETER "PRESInterParticipantParameter" /*e \ingroup PRESInterParticipantModule Name of topic used for liveliness support. */ #define PRES_INTER_PARTICIPANT_TOPIC \ PRES_PARTICIPANT_MESSAGE_TOPIC /*e \ingroup PRESInterParticipantModule Name of topic used for secure liveliness support. */ #define PRES_INTER_PARTICIPANT_SECURE_TOPIC \ PRES_PARTICIPANT_MESSAGE_SECURE_TOPIC /*e \ingroup PRESInterParticipantModule Builtin endpoint mask for participant message data writer, specified in RTPS spec. */ #define PRES_INTER_PARTICIPANT_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_WRITER \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_WRITER /*e \ingroup PRESInterParticipantModule Builtin endpoint mask for participant message data reader, specified in RTPS spec. */ #define PRES_INTER_PARTICIPANT_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_DATA_READER \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_READER /*e \ingroup PRESInterParticipantModule * Builtin endpoint mask for secure participant message data writer, specified * in DDS Security spec. */ #define PRES_INTER_PARTICIPANT_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_DATA_WRITER \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_WRITER /*e \ingroup PRESInterParticipantModule * Builtin endpoint mask for secure participant message data reader, specified * in DDS Security spec. */ #define PRES_INTER_PARTICIPANT_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_DATA_READER \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_READER /*e \ingroup PRESInterParticipantModule Object ID for liveliness writer, specified in RTPS spec. */ #define PRES_INTER_PARTICIPANT_RTPS_OBJECT_ID_WRITER \ MIG_RTPS_OBJECT_ID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER /*e \ingroup PRESInterParticipantModule Object ID for liveliness reader, specified in RTPS spec. */ #define PRES_INTER_PARTICIPANT_RTPS_OBJECT_ID_READER \ MIG_RTPS_OBJECT_ID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER /*e \ingroup PRESInterParticipantModule Object ID for liveliness secure writer, specified in DDS Security spec. */ #define PRES_INTER_PARTICIPANT_RTPS_OBJECT_ID_SECURE_WRITER \ MIG_RTPS_OBJECT_ID_SECURE_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER /*e \ingroup PRESInterParticipantModule Object ID for liveliness secure reader, specified in DDS Security spec. */ #define PRES_INTER_PARTICIPANT_RTPS_OBJECT_ID_SECURE_READER \ MIG_RTPS_OBJECT_ID_SECURE_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER /*e \ingroup PRESInterParticipantModule Default inter participant message kind */ #define PRES_INTER_PARTICIPANT_MESSAGE_KIND_UNKNOWN (0x00000000) /*e \ingroup PRESInterParticipantModule Automatic liveliness update message kind. */ #define PRES_INTER_PARTICIPANT_MESSAGE_KIND_AUTOMATIC_LIVELINESS_UPDATE \ NDDS_TRANSPORT_INTER_PARTICIPANT_MESSAGE_KIND_AUTOMATIC_LIVELINESS_UPDATE /*e * \ingroup PRESInterParticipantModule * Manual liveliness update message kind. */ #define PRES_INTER_PARTICIPANT_MESSAGE_KIND_MANUAL_LIVELINESS_UPDATE \ NDDS_TRANSPORT_INTER_PARTICIPANT_MESSAGE_KIND_MANUAL_LIVELINESS_UPDATE #define PRES_INTER_PARTICIPANT_DATA_MAX_LENGTH_DEFAULT (256) #define PRES_INTER_PARTICIPANT_DATA_MAX_LENGTH_NAME "PRESInterParticipantDataMaxLength" #define PRES_INTER_PARTICIPANT_DATA_MAX_LENGTH_VALUE_LENGTH (32) struct PRESInterParticipantProperty { /*e property used to govern liveliness reader behavior */ struct PRESPsSrReaderProperty readerProperty; /*e property used to govern liveliness writer behavior */ struct PRESPsSrWriterProperty writerProperty; /*e priority of liveliness traffic on transport */ struct PRESTransportPriorityQosPolicy transportPriority; /*e enabled transports */ struct RTINetioAliasList transportAliasList; /*e ID of participant */ MIGRtpsParticipantId participantId; /*e Maximum length of inter participant data sequence */ int interParticipantDataMaximumLength; /*e Cdr stream padding kind */ PRESCdrPaddingKind cdrPaddingKind; /*e This determines if we use reliable liveliness reader. This may be * enabled for backwards compatibility with versions previous to 5.2.0. */ RTIBool useReliableReader; /*e * Used to determine whether interpaticipant channel should be used to * maintain participant liveliness. */ RTIBool assertParticipantLiveliness; /* * This determines if we will optimize when we send automatic liveliness * updates if we also are using manual liveliness updates. * If this is set to RTI_TRUE, we will not send an automatic liveliness * update if we have sent a manual update within the same period. If we * discover any non-RTI participants, we will resume sending auto * liveliness updates even if we have sent a manual update. * If this is set to RTI_FALSE, we will send automatic liveliness updates * regardless of whether we have sent manual updates in the same period. * This field only exists for compliance with the spec. */ RTIBool optimizeAutomaticLiveliness; }; #define PRES_INTER_PARTICIPANT_PROPERTY_DEFAULT { \ PRES_PS_SR_READER_PROPERTY_DEFAULT, /* readerProperty */ \ PRES_PS_SR_WRITER_PROPERTY_DEFAULT, /* writerProperty */ \ {NDDS_TRANSPORT_PRIORITY_DEFAULT},/* transportPriority */ \ RTI_NETIO_ALIAS_LIST_DEFAULT,/* transportAliasList */ \ MIG_RTPS_GUID_PREFIX_UNKNOWN, /* participant Id */ \ PRES_INTER_PARTICIPANT_DATA_MAX_LENGTH_DEFAULT, /* interParticipantDataMaximumLength */\ PRES_AUTO_CDR_PADDING, /* cdrPaddingKind */ \ RTI_FALSE, /* useReliableReader */ \ RTI_FALSE, /* assertParticipantLiveliness */ \ RTI_TRUE /* optimizeAutomaticLiveliness */ \ } struct PRESInterParticipant; struct PRESInterParticipantKey { MIGRtpsParticipantId participantId; RTI_UINT32 kind; }; #define PRES_INTER_PARTICIPANT_KEY_DEFAULT { \ MIG_RTPS_GUID_PREFIX_UNKNOWN /* participantId */, \ PRES_INTER_PARTICIPANT_MESSAGE_KIND_UNKNOWN /* kind */ \ } struct PRESInterParticipantData { struct PRESInterParticipantKey key; struct PRESSequenceOctet data; }; #define PRES_INTER_PARTICIPANT_DATA_DEFAULT { \ PRES_INTER_PARTICIPANT_KEY_DEFAULT /* key */, \ PRES_SEQUENCE_OCTET_DEFAULT /* data */ \ } extern PRESDllExport unsigned int PRESInterParticipantKey_getMaxSizeSerialized( unsigned int size); extern PRESDllExport RTIBool PRESInterParticipantKey_copy( struct PRESInterParticipantKey *dst, const struct PRESInterParticipantKey *src); extern PRESDllExport void PRESInterParticipantKey_print( const struct PRESInterParticipantKey *key, const char *desc, unsigned int indent); struct PRESInterParticipantDataPool { struct PRESTypePluginPool *parent; /* Support for variable length sequence */ int _interParticipantDataMaximumLength; struct REDAFastBufferPool *_interParticipantDataPool; }; extern PRESDllExport struct PRESInterParticipant * PRESInterParticipant_new( struct PRESParticipant *participant, struct COMMENDFacade *facade, struct REDAExclusiveArea* readerGroupEA, struct REDAExclusiveArea* writerGroupEA, struct PRESInterParticipantProperty *property, struct REDAWorker *worker); extern PRESDllExport RTIBool PRESInterParticipant_enable( struct PRESInterParticipant *me, struct REDAWorker *worker); extern PRESDllExport RTIBool PRESInterParticipant_shutdown( struct PRESInterParticipant *me, struct REDAWorker *worker); extern PRESDllExport void PRESInterParticipant_delete( struct PRESInterParticipant *me); extern PRESDllExport RTIBool PRESInterParticipant_shutdownWriter( struct PRESInterParticipant *me, RTIBool isSecure, struct REDAWorker *worker); /* TODO/FIXME: Remove this when bugfix merged into DISC branch */ #define TOPIC_MASKED_IN_NULL_LISTENER_NOT_SUPPORTED #ifdef __cplusplus } /* extern "C" */ #endif #endif /* pres_liveliness_h */