271 lines
8.9 KiB
C
271 lines
8.9 KiB
C
/* (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 */
|