Files
qt6-migration-pipeline/external/rti_connext_dds-7.7.0/include/ndds/mig/mig_rtps.h
T
torstenandCopilot 342ffd3e5c Update submodule to latest BUILD_RTI fixes
- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten
- svcTabCommon: Export-Header-Fix via Fallback-Target
- TrainingAreaBase: Stub-Header für BUILD_RTI=OFF
- ddsfts: Include-Pfad und Dependency-Fixes
- BUILD_RTI=OFF Compilation vollständig unterstützt

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
2026-08-21 19:30:20 +02:00

4800 lines
131 KiB
C

/*
* Copyright (c) 2024 Real-Time Innovations, Inc. All rights reserved.
* No duplications, whole or partial, manual or electronic, may be made
* without express written permission. Any such copies, or revisions thereof,
* must display this notice unaltered.
* This code contains trade secrets of Real-Time Innovations, Inc.
*/
#ifndef mig_rtps_h
#define mig_rtps_h
#ifndef osapi_type_h
#include "osapi/osapi_type.h"
#endif
#ifndef osapi_rtpsGuid_h
#include "osapi/osapi_rtpsGuid.h"
#endif
#ifndef reda_epoch_h
#include "reda/reda_epoch.h"
#endif
#ifndef reda_inlineList_h
#include "reda/reda_inlineList.h"
#endif
#ifndef reda_sequenceNumber_h
#include "reda/reda_sequenceNumber.h"
#endif
#ifndef cdr_type_h
#include "cdr/cdr_type.h"
#endif
#ifndef transport_common_h
#include "transport/transport_common.h"
#endif
#ifndef mig_dll_h
#include "mig/mig_dll.h"
#endif
#ifndef cdr_stream_h
#include "cdr/cdr_stream.h"
#endif
#ifndef xcdr_rtps_h
#include "xcdr/xcdr_rtps.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Doxygen file-level documentation =====================================*/
/* ======= */
/* DOXYGEN */
/* ======= */
/*e \file
\brief RTPS protocol defined types, implemented in C.
*/
/*e \defgroup MIGRtpsClass MIGRtps
\ingroup MIGModule
\brief The RTPS protocol defines many types. This submodule is a concrete
implementation of the data types necessary for RTPS communication.
For detailed explanation, see RTPS protocol.
*/
/*e \defgroup MIGRtpsBitmapClass MIGRtpsBitmap
\ingroup MIGRtpsClass
*/
/*e \defgroup MIGRtpsParameterSequenceClass MIGRtpsParameterSequence
\ingroup MIGModule
\brief optional parameter sequence
For detailed explanation, see RTPS protocol.
*/
/*e \defgroup MIGRtpsPidModule MIGRtpsPid
\ingroup MIGRtpsModule
@brief RTPS defined parameter ID.
*/
/*e \defgroup MIGRtpsSubmessageFlagClass MIGRtpsSubmessageFlag
\ingroup MIGRtpsClass
\brief Submessages may have flag bitfield, which impart more meaning
to the contents.
*/
/*e \defgroup MIGRtpsSubmessageVarStatusInfoClass MIGRtpsSubmessageVarStatusInfo
\ingroup MIGRtpsClass
\brief VAR submessages may have status info bitfield, which impart more
meaning to the contents.
*/
/*e \defgroup MIGRtpsSequenceNumberClass MIGRtpsSequenceNumber
\ingroup MIGRtpsClass
\brief A logical derived class of \ref REDASequenceNumber, which exists solely
to supply helper methods to deal with RTPS protocol aspect.
*/
/*e \defgroup MIGRtpsVirtualWriterInfoClass MIGRtpsVirtualWriterInfo
\ingroup MIGRtps
\brief
*/
/* ============== */
/* END OF DOXYGEN */
/* ============== */
/* ======= */
/* DEFINES */
/* ======= */
/* ================= */
/* SIZES AND LENGTHS */
/* ================= */
#define MIG_RTPS_APP_ACK_MAX_USER_DATA_SIZE 32768
#define MIG_RTPS_CRC_32_SIZE (4)
#define MIG_RTPS_CRC_64_SIZE (8)
#define MIG_RTPS_CRC_128_SIZE (16)
#define MIG_RTPS_CRC_MAX_SIZE MIG_RTPS_CRC_128_SIZE
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_CRC_SUBMESSAGE_CONTENT_SIZE (8)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_SUBMESSAGE_HEADER_SIZE ((RTI_UINT16) 4)
/**
* @brief Size of a CRC submessage.
*/
#define MIG_RTPS_CRC_SIZE \
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE + MIG_RTPS_CRC_SUBMESSAGE_CONTENT_SIZE)
/*e \ingroup MIGRtpsClass */
/*
* DATA_BATCH submsg overhead (40 bytes total) without including inlineQos
* and batchSampleInfo.
* - submessage overhead (4 bytes)
* - extraFlags (2 bytes)
* - octetsToInlineQos (2 bytes)
* - readerId (4 bytes)
* - writerId (4 bytes)
* - batchSN (8 bytes)
* - firstSampleSN (8 bytes)
* - offsetToLastSampleSN (4 bytes)
* - batchSampleCount (4 bytes)
*/
#define MIG_RTPS_DATA_BATCH_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 36)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MIN (8)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_AVG \
MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MIN
/*e \ingroup MIGRtpsClass */
/*
* DATA_FRAG submsg overhead (36 bytes total):
* - submessage overhead (4 bytes)
* - extraFlags (2 bytes)
* - octetsToInlineQos (2 bytes)
* - readerId (4 bytes)
* - writerId (4 bytes)
* - writerSN (8 bytes)
* - fragmentStartingNum (4 bytes)
* - fragmentsInSubmessage (2 bytes)
* - fragmentSize (2 bytes)
* - sampleSize (4 bytes)
*/
#define MIG_RTPS_DATA_FRAG_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 32)
/*e \ingroup MIGRtpsClass */
/*
* DATA_FRAG_SESSION submsg overhead (44 bytes total):
* Adds virtualWriterSN to the DATA_FRAG size.
*/
#define MIG_RTPS_DATA_FRAG_SESSION_SIZE (MIG_RTPS_DATA_FRAG_SIZE + 8)
/*e \ingroup MIGRtpsClass */
/*
* \brief Minimum size of a DATA submessage (so no inlineQos or serialized data)
* without the submessage header.
* Accounts for extraFlags (2B), octectsToInlineQos (2B), readerId (4B) and
* writerId (4B) and writerSN (8B).
* Refer to the RTPS Specification 2.3. - Section 9.4.5.3.
* This differs from MIG_RTPS_DATA_SIZE in that here we are not considering the
* MIG_RTPS_SUBMESSAGE_HEADER_SIZE (4B).
*/
#define MIG_RTPS_DATA_SUBMESSAGE_MIN_CONTENT_SIZE (20)
/*e \ingroup MIGRtpsClass */
/*
* @brief Minimum size of a DATA submessage.
* Refer to the RTPS Specification 2.3. - Section 9.4.5.3.
*/
#define MIG_RTPS_DATA_SIZE \
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE \
+ MIG_RTPS_DATA_SUBMESSAGE_MIN_CONTENT_SIZE)
/*e \ingroup MIGRtpsClass */
/*
* DATA_SESSION submsg overhead (32 bytes total):
* - submessage overhead (4 bytes)
* - extraFlags (2 bytes)
* - octetsToInlineQos (2 bytes)
* - readerId (4 bytes)
* - writerId (4 bytes)
* - writerSN (8 bytes)
* - writerVSN (8 bytes)
*/
#define MIG_RTPS_DATA_SESSION_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 28)
#define MIG_RTPS_EPOCH_SIZE (4)
/*
* @brief Filter signature length
*/
#define MIG_RTPS_FILTER_SIGNATURE_LENGTH 16
/*RTPS.2.0*/
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_GUID_PREFIX_SIZE (12)
/*e \ingroup MIGRtpsClass
@see MIGRtpsGuid_toString
*/
#define MIG_RTPS_GUID_STRING_LENGTH (44)
#define MIG_RTPS_GAP_SIZE_SERIALIZED (52)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_HEADER_MAGIC_WORD_SIZE (4)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_HEADER_SIZE ((RTI_UINT16) 20) /*RTPS.2.0*/
#define MIG_RTPS_HEARTBEAT_BATCH_SIZE_SERIALIZED (48)
#define MIG_RTPS_HEARTBEAT_SIZE_SERIALIZED (32)
/*
* @brief Size of an INFO_DST submessage.
*/
#define MIG_RTPS_INFO_DESTINATION_SIZE \
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE + MIG_RTPS_GUID_PREFIX_SIZE)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_INFO_SOURCE_UNUSED_FIELD_SIZE (4)
/*
* @brief Size of an INFO_TS submessage.
*/
#define MIG_RTPS_INFO_TS_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 8)
#define MIG_RTPS_KEY_HASH_INVALID_LENGTH 0
#define MIG_RTPS_KEY_HASH_MAX_LENGTH 16
/*
* CORE-6181: maximum string length = length representation (4) +
* string (2 characters per byte) + null character (1)
*/
#define MIG_RTPS_KEY_HASH_STRING_MAX_LENGTH \
(4 + (2 * MIG_RTPS_KEY_HASH_MAX_LENGTH) + 1)
#define MIG_RTPS_NACKFRAG_SIZE_SERIALIZED (56)
#define MIG_RTPS_OCTETS_TO_ENCAPSULATION_ID_SIZE (4)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_PROTOCOL_VERSION_SIZE (2)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_SUBMESSAGE_HEADER_SIZE_MAX (64)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_SUBMESSAGE_SIZE_MIN (8)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_VENDOR_ID_SIZE (2)
/*e \ingroup MIGRtpsVirtualWriterInfoClass */
#define MIG_RTPS_VIRTUAL_WRITER_INFO_MAX_OVERHEAD_SIZE (48)
/*e \ingroup MIGRtpsVirtualWriterInfoClass */
#define MIG_RTPS_WRITER_INFO_MAX_HEADER_OVERHEAD_SIZE \
(8) /* entityId + unsigned long */
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_INFO_SOURCE_CONTENT_SIZE \
(MIG_RTPS_INFO_SOURCE_UNUSED_FIELD_SIZE + MIG_RTPS_PROTOCOL_VERSION_SIZE \
+ MIG_RTPS_VENDOR_ID_SIZE + MIG_RTPS_GUID_PREFIX_SIZE)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_INFO_SOURCE_SIZE \
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE + MIG_RTPS_INFO_SOURCE_CONTENT_SIZE)
/* ======================== */
/* END OF SIZES AND LENGTHS */
/* ======================== */
/* ============================== */
/* MAX, DEFAULT OR INVALID VALUES */
/* ============================== */
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_APP_ID_AUTO (0x00000000)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_APP_ID_UNKNOWN RTI_OSAPI_RTPS_APP_ID_UNKNOWN
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_APP_ID_ZERO (0x00000000)
/*e \ingroup MIGRtpsBitmapClass */
#define MIG_RTPS_BITMAP_32BITS_ARRAY_SIZE_MAX (8) /* 256/32 = 8 */
/*e \ingroup MIGRtpsBitmapClass
Can only handle distance that doesn't overflow with int anyway.
*/
#define MIG_RTPS_BITMAP_DISTANCE_MAX (0x7FFFFFFF)
/*e \ingroup MIGRtpsBitmapClass */
#define MIG_RTPS_BITMAP_SIZE_MAX (256)
/*e \ingroup MIGRtpsClass
The size of the sample info ignoring the inline parameters is 20 bytes
The MIG_RTPS_BATCHDATA_SAMPLEINFO_SIZE_MAX is considering five possible inline
parameters:
- KEYHASH (4 + 16)
- STATUSINFO (4 + 4)
- ORIGWRITERINFO (4 + 24)
- RELATEDORIGWRITERINFO (4 + 24)
- SOURCE_GUID (4 + 16)
- RELATED_SOURCE_GUID (4 + 16)
- RELATED_READER_GUID (4 + 16)
- RELATED_EPOCH (4 + 8)
- SENTINEL (4)
*/
/* Inline param */
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_INLINE_PARAM_SIZE_MAX (160)
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_INLINE_PARAM_SIZE_MAX_WITHOUT_KEYHASH \
(140)
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_INLINE_PARAM_UNKEYED_SIZE_MAX (140)
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MAX (180)
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MAX_WITHOUT_INLINE_PARAM (20)
#define MIG_RTPS_DATA_INLINE_QOS_OFFSET_DEFAULT (16)
#define MIG_RTPS_DOMAIN_DEFAULT (-1)
#define MIG_RTPS_DOMAIN_TAG_DEFAULT (NULL)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_GUID_AUTO \
{ \
MIG_RTPS_GUID_PREFIX_AUTO, MIG_RTPS_OBJECT_ID_AUTO \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_GUID_UNKNOWN \
{ \
MIG_RTPS_GUID_PREFIX_UNKNOWN, MIG_RTPS_OBJECT_ID_UNKNOWN \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_GUID_ZERO \
{ \
MIG_RTPS_GUID_PREFIX_ZERO, MIG_RTPS_OBJECT_ID_ZERO \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_GUID_PREFIX_AUTO \
{ \
MIG_RTPS_HOST_ID_AUTO, MIG_RTPS_APP_ID_AUTO, MIG_RTPS_INSTANCE_ID_AUTO \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_GUID_PREFIX_UNKNOWN \
{ \
MIG_RTPS_HOST_ID_UNKNOWN, MIG_RTPS_APP_ID_UNKNOWN, \
MIG_RTPS_INSTANCE_ID_UNKNOWN \
}
#define MIG_RTPS_GUID_PREFIX_ZERO \
{ \
MIG_RTPS_HOST_ID_ZERO, MIG_RTPS_APP_ID_ZERO, MIG_RTPS_INSTANCE_ID_ZERO \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_HOST_ID_AUTO (0x00000000)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_HOST_ID_UNKNOWN RTI_OSAPI_RTPS_HOST_ID_UNKNOWN
#define MIG_RTPS_HOST_ID_ZERO (0x00000000)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_INSTANCE_ID_AUTO (0x00000000) /*RTPS.2.0*/
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_INSTANCE_ID_UNKNOWN \
RTI_OSAPI_RTPS_INSTANCE_ID_UNKNOWN /*RTPS.2.0*/
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_INSTANCE_ID_ZERO (0x00000000) /*RTPS.2.0*/
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_IP_ADDRESS_INVALID (0)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_KEY_HASH_DEFAULT \
{ \
MIG_RTPS_KEY_HASH_NIL, /* value */ \
MIG_RTPS_KEY_HASH_MAX_LENGTH /* length */ \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_KEY_HASH_INVALID \
{ \
MIG_RTPS_KEY_HASH_NIL, /* value */ \
MIG_RTPS_KEY_HASH_INVALID_LENGTH /* length */ \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_KEY_HASH_NIL \
{ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
}
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_PORT_INVALID (0)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_SUBMESSAGE_ALIGNMENT (4)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_SUBMESSAGE_OCTETS_TO_NEXT_HEADER_MAX (0xFFFF)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_OBJECT_KEY_UNKNOWN (0)
/*e \ingroup MIGRtpsClass
\brief Meta traffic bit.
*/
#define MIG_RTPS_OBJECT_KIND_M_BIT (0x80)
/*e \ingroup MIGRtpsClass
\brief Reserved object bit.
*/
#define MIG_RTPS_OBJECT_KIND_R_BIT (0x40)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_PATHNAME_LEN_MAX (255)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_TIMESTAMP_FRAC_DEFAULT (0)
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_TIMESTAMP_SEC_DEFAULT (0)
/*e \ingroup MIGRtpsClass */
#define MIG_UNPROTECTED_CHANNELS_MAX_LENGTH_DEFAULT (1048576) /* 1MB */
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
#define MIG_RTPS_NO_STATUS_INFO (0x00000000)
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
#define MIG_RTPS_D_STATUS_INFO (0x00000001)
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
#define MIG_RTPS_U_STATUS_INFO (0x00000002)
/* ===================================== */
/* END OF MAX, DEFAULT OR INVALID VALUES */
/* ===================================== */
/* ========== */
/* OBJECT IDS */
/* ========== */
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_OBJECT_ID_UNKNOWN (0x00000000)
#define MIG_RTPS_OBJECT_ID_ZERO (0x00000000)
#define MIG_RTPS_OBJECT_ID_AUTO (0x00000000)
#define MIG_RTPS_OBJECT_ID_PARTICIPANT (0x000001C1)
#define MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER \
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER
#define MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_READER (0x000100C7)
#define MIG_RTPS_OBJECT_ID_PUB_WRITER NDDS_TRANSPORT_RTPS_OBJECT_ID_PUB_WRITER
#define MIG_RTPS_OBJECT_ID_SUB_WRITER NDDS_TRANSPORT_RTPS_OBJECT_ID_SUB_WRITER
#define MIG_RTPS_OBJECT_ID_PUB_READER NDDS_TRANSPORT_RTPS_OBJECT_ID_PUB_READER
#define MIG_RTPS_OBJECT_ID_SUB_READER NDDS_TRANSPORT_RTPS_OBJECT_ID_SUB_READER
#define MIG_RTPS_OBJECT_ID_SECURE_PUB_WRITER (0xFF0003C2)
#define MIG_RTPS_OBJECT_ID_SECURE_SUB_WRITER (0xFF0004C2)
#define MIG_RTPS_OBJECT_ID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER \
NDDS_TRANSPORT_RTPS_OBJECT_ID_P2P_PARTICIPANT_LIVELINESS_WRITER
#define MIG_RTPS_OBJECT_ID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER (0x000200C7)
/* SERVICE REQUEST object IDs are in the entity kind vendor-builtin range */
#define MIG_RTPS_OBJECT_ID_SERVICE_REQUEST_WRITER (0x00020082)
#define MIG_RTPS_OBJECT_ID_SERVICE_REQUEST_READER (0x00020087)
/* LOCATOR PING object IDs are in the entity kind vendor-builtin range */
#define MIG_RTPS_OBJECT_ID_LOCATOR_PING_MESSAGE_WRITER (0x00020182)
#define MIG_RTPS_OBJECT_ID_LOCATOR_PING_MESSAGE_READER (0x00020187)
/* MONITORING object IDs */
#define MIG_RTPS_OBJECT_ID_MONITORING_PERIODIC_WRITER (0x00000183)
#define MIG_RTPS_OBJECT_ID_MONITORING_PERIODIC_READER (0x00000184)
#define MIG_RTPS_OBJECT_ID_MONITORING_PERIODIC_READER_CACHE (0x0001843C)
/* The Monitoring periodic reader does not have a related cache reader */
#define MIG_RTPS_OBJECT_ID_MONITORING_EVENT_WRITER (0x00000283)
#define MIG_RTPS_OBJECT_ID_MONITORING_EVENT_READER (0x00000284)
#define MIG_RTPS_OBJECT_ID_MONITORING_EVENT_READER_CACHE (0x0002843C)
#define MIG_RTPS_OBJECT_ID_MONITORING_LOGGING_WRITER (0x00000383)
#define MIG_RTPS_OBJECT_ID_MONITORING_LOGGING_READER (0x00000384)
#define MIG_RTPS_OBJECT_ID_MONITORING_LOGGING_READER_CACHE (0x0003843C)
/* DDS Security: stateless entities */
#define MIG_RTPS_OBJECT_ID_STATELESS_MESSAGE_WRITER (0x000201C3)
#define MIG_RTPS_OBJECT_ID_STATELESS_MESSAGE_READER (0x000201C4)
/* DDS Security: secure participant reliable discovery entities */
#define MIG_RTPS_OBJECT_ID_SECURE_SPDP_BUILTIN_PARTICIPANT_RELIABLE_WRITER \
(0xFF0101C2)
#define MIG_RTPS_OBJECT_ID_SECURE_SPDP_BUILTIN_PARTICIPANT_RELIABLE_READER \
(0xFF0101C7)
/* DDS Security: secure participant message entities */
#define MIG_RTPS_OBJECT_ID_SECURE_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER \
NDDS_TRANSPORT_RTPS_OBJECT_ID_SECURE_P2P_PARTICIPANT_LIVELINESS_WRITER
#define MIG_RTPS_OBJECT_ID_SECURE_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER \
(0xFF0200C7)
/* DDS Security: secure volatile entities */
#define MIG_RTPS_OBJECT_ID_SECURE_VOLATILE_MESSAGE_WRITER (0xFF0202C3)
#define MIG_RTPS_OBJECT_ID_SECURE_VOLATILE_MESSAGE_READER (0xFF0202C4)
/* RTI Secure DDS: secure service request */
#define MIG_RTPS_OBJECT_ID_SECURE_SERVICE_REQUEST_WRITER (0xFF020082)
#define MIG_RTPS_OBJECT_ID_SECURE_SERVICE_REQUEST_READER (0xFF020087)
/* DDS SPDP2: reliable participant configuration entities */
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER \
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_BOOTSTRAP_WRITER
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER \
(0x00010087)
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_WRITER \
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_CONFIG_WRITER
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_READER \
(0x00010187)
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_WRITER \
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_SECURE_CONFIG_WRITER
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_READER \
(0xFF010187)
/* Type lookup */
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_WRITER (0x000300C3)
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_READER (0x000300C4)
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_WRITER (0x000301C3)
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_READER (0x000301C4)
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
(0xFF0300C3)
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_READER \
(0xFF0300C4)
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_WRITER (0xFF0301C3)
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_READER (0xFF0301C4)
/* ================= */
/* END OF OBJECT IDS */
/* ================= */
/* ============== */
/* ENDPOINTS BITS */
/* ============== */
/* ====================== */
/* BUILTIN ENDPOINTS BITS */
/* ====================== */
/* Protocol defined built-in endpoint bits */
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_WRITER \
((RTI_UINT32) 0x00000001 << 0)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_READER \
((RTI_UINT32) 0x00000001 << 1)
#define MIG_RTPS_BUILTIN_ENDPOINT_PUBLICATION_WRITER \
((RTI_UINT32) 0x00000001 << 2)
#define MIG_RTPS_BUILTIN_ENDPOINT_PUBLICATION_READER \
((RTI_UINT32) 0x00000001 << 3)
#define MIG_RTPS_BUILTIN_ENDPOINT_SUBSCRIPTION_WRITER \
((RTI_UINT32) 0x00000001 << 4)
#define MIG_RTPS_BUILTIN_ENDPOINT_SUBSCRIPTION_READER \
((RTI_UINT32) 0x00000001 << 5)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_WRITER \
((RTI_UINT32) 0x00000001 << 6)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_READER \
((RTI_UINT32) 0x00000001 << 7)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATE_WRITER \
((RTI_UINT32) 0x00000001 << 8)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATE_READER \
((RTI_UINT32) 0x00000001 << 9)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_WRITER \
((RTI_UINT32) 0x00000001 << 10)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_READER \
((RTI_UINT32) 0x00000001 << 11)
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
((RTI_UINT32) 0x00000001 << 12)
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REQUEST_READER \
((RTI_UINT32) 0x00000001 << 13)
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REPLY_WRITER \
((RTI_UINT32) 0x00000001 << 14)
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REPLY_READER \
((RTI_UINT32) 0x00000001 << 15)
/* DDS Security related endpoints */
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PUBLICATION_WRITER \
((RTI_UINT32) 0x00000001 << 16)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PUBLICATION_READER \
((RTI_UINT32) 0x00000001 << 17)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_SUBSCRIPTION_WRITER \
((RTI_UINT32) 0x00000001 << 18)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_SUBSCRIPTION_READER \
((RTI_UINT32) 0x00000001 << 19)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_WRITER \
((RTI_UINT32) 0x00000001 << 20)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_READER \
((RTI_UINT32) 0x00000001 << 21)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATELESS_MESSAGE_WRITER \
((RTI_UINT32) 0x00000001 << 22)
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATELESS_MESSAGE_READER \
((RTI_UINT32) 0x00000001 << 23)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_VOLATILE_MESSAGE_WRITER \
((RTI_UINT32) 0x00000001 << 24)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_VOLATILE_MESSAGE_READER \
((RTI_UINT32) 0x00000001 << 25)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_RELIABLE_PARTICIPANT_WRITER \
((RTI_UINT32) 0x00000001 << 26)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_RELIABLE_PARTICIPANT_READER \
((RTI_UINT32) 0x00000001 << 27)
/* ============================= */
/* END OF BUILTIN ENDPOINTS BITS */
/* ============================= */
/* ========================== */
/* BUILTIN ENDPOINTS EXT BITS */
/* ========================== */
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
((RTI_UINT32) 0x00000001 << 0)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_READER \
((RTI_UINT32) 0x00000001 << 1)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REPLY_WRITER \
((RTI_UINT32) 0x00000001 << 2)
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REPLY_READER \
((RTI_UINT32) 0x00000001 << 3)
/* ================================= */
/* END OF BUILTIN ENDPOINTS EXT BITS */
/* ================================= */
/* ====================================== */
/* VENDOR SPECIFIC BUILTIN ENDPOINTS BITS */
/* ====================================== */
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SERVICE_REQUEST_WRITER \
((RTI_UINT32) 0x00000001 << 0)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SERVICE_REQUEST_READER \
((RTI_UINT32) 0x00000001 << 1)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_LOCATOR_PING_WRITER \
((RTI_UINT32) 0x00000001 << 2)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_LOCATOR_PING_READER \
((RTI_UINT32) 0x00000001 << 3)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SECURE_SERVICE_REQUEST_WRITER \
((RTI_UINT32) 0x00000001 << 4)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SECURE_SERVICE_REQUEST_READER \
((RTI_UINT32) 0x00000001 << 5)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_CDS_ANNOUNCER_WRITER \
((RTI_UINT32) 0x00000001 << 6)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_WRITER \
((RTI_UINT32) 0x00000001 << 7)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_READER \
((RTI_UINT32) 0x00000001 << 8)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_WRITER \
((RTI_UINT32) 0x00000001 << 9)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_READER \
((RTI_UINT32) 0x00000001 << 10)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_PERIODIC_WRITER \
((RTI_UINT32) 0x00000001 << 11)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_PERIODIC_READER \
((RTI_UINT32) 0x00000001 << 12)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_EVENT_WRITER \
((RTI_UINT32) 0x00000001 << 13)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_EVENT_READER \
((RTI_UINT32) 0x00000001 << 14)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_LOGGING_WRITER \
((RTI_UINT32) 0x00000001 << 15)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_LOGGING_READER \
((RTI_UINT32) 0x00000001 << 16)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER \
((RTI_UINT32) 0x00000001 << 17)
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER \
((RTI_UINT32) 0x00000001 << 18)
/* ============================================= */
/* END OF VENDOR SPECIFIC BUILTIN ENDPOINTS BITS */
/* ============================================= */
/* ===================== */
/* END OF ENDPOINTS BITS */
/* ===================== */
/* ===== */
/* FLAGS */
/* ===== */
/*e \ingroup MIGRtpsSubmessageFlagClass */
#define MIG_RTPS_NO_FLAG ((MIGRtpsSubmessageFlag) 0x00)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether this is a big endian/little endian message
*/
#define MIG_RTPS_ENDIAN_FLAG ((MIGRtpsSubmessageFlag) 0x01)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief MessageLengthFlag tells if the HE contains messageLength
*/
#define MIG_RTPS_HE_MSG_LEN_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief timestampFlag tells if the HE contains timestamp
*/
#define MIG_RTPS_HE_TS_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief RTPS 2.5 UExtension4Flag
*/
#define MIG_RTPS_HE_UE4_FLAG ((MIGRtpsSubmessageFlag) 0x08)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief RTPS 2.5 WExtension8Flag
*/
#define MIG_RTPS_HE_WE8_FLAG ((MIGRtpsSubmessageFlag) 0x10)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief One of two checksum flags: "C1" in RTPS 2.5 specification.
The ChecksumFlags are represented with the literal 'C'. There are three two
flags: C1 and C2. When the two 'C' flags are set to zero, the HeaderExtension
does not include the messageChecksum, any other value of the flags indicates
the messageChecksum is included (possible options are: NONE, CRC-32, CRC-64,
MD5 (128 bit)).
*/
#define MIG_RTPS_HE_CHECKSUM1_FLAG ((MIGRtpsSubmessageFlag) 0x40)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief Second of two checksum flags: "C2" in RTPS 2.5 specification.
The ChecksumFlags are represented with the literal 'C'. There are three two
flags: C1 and C2. When the two 'C' flags are set to zero, the HeaderExtension
does not include the messageChecksum, any other value of the flags indicates
the messageChecksum is included (possible options are: NONE, CRC-32, CRC-64,
MD5 (128 bit)).
*/
#define MIG_RTPS_HE_CHECKSUM2_FLAG ((MIGRtpsSubmessageFlag) 0x20)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
\brief ParametersFlag, tells if HE contains parameters
*/
#define MIG_RTPS_HE_PARAM_FLAG ((MIGRtpsSubmessageFlag) 0x80)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_INFO_REPLY
*/
#define MIG_RTPS_INFO_REPLY_M_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_INFO_TS
*/
#define MIG_RTPS_INFO_TS_I_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_ACK
*/
#define MIG_RTPS_ACK_F_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_NACK
*/
#define MIG_RTPS_ACK_N_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT
*/
#define MIG_RTPS_HEARTBEAT_F_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_BATCH
*/
#define MIG_RTPS_HEARTBEAT_BATCH_F_FLAG MIG_RTPS_HEARTBEAT_F_FLAG
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT
*/
#define MIG_RTPS_HEARTBEAT_L_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_BATCH
*/
#define MIG_RTPS_HEARTBEAT_BATCH_L_FLAG MIG_RTPS_HEARTBEAT_L_FLAG
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_VIRTUAL
*/
#define MIG_RTPS_HEARTBEAT_VIRTUAL_V_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_VIRTUAL
*/
#define MIG_RTPS_HEARTBEAT_VIRTUAL_W_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_VIRTUAL
*/
#define MIG_RTPS_HEARTBEAT_VIRTUAL_N_FLAG ((MIGRtpsSubmessageFlag) 0x08)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_ISSUE
*/
#define MIG_RTPS_ISSUE_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_ISSUE
*/
#define MIG_RTPS_ISSUE_D_FLAG ((MIGRtpsSubmessageFlag) 0x04)
#define MIG_RTPS_DATA_FLAGS_NONE (0)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_DATA
*/
#define MIG_RTPS_DATA_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_DATA
*/
#define MIG_RTPS_DATA_D_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_DATA
*/
#define MIG_RTPS_DATA_K_FLAG ((MIGRtpsSubmessageFlag) 0x08)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_VAR
*/
#define MIG_RTPS_VAR_H_FLAG ((MIGRtpsSubmessageFlag) 0x08)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_VAR
*/
#define MIG_RTPS_VAR_I_FLAG ((MIGRtpsSubmessageFlag) 0x10)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_DATA_FRAG
*/
#define MIG_RTPS_DATA_FRAG_H_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_DATA_FRAG
*/
#define MIG_RTPS_DATA_FRAG_K_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
@see MIGRtpsSubmessageId#MIG_RTPS_DATA_BATCH
*/
#define MIG_RTPS_DATA_BATCH_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether a batch sample has timestamp or not
Use in SAMPLE_INFO inside BATCH_DATA messages.
*/
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_T_FLAG ((MIGRtpsSubmessageFlag) 0x01)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether or not a batch sample has inlienQoS
Use in SAMPLE_INFO inside BATCH_DATA messages.
*/
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether or not a batch sample has sequence offset
Use in SAMPLE_INFO inside BATCH_DATA messages.
*/
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_O_FLAG ((MIGRtpsSubmessageFlag) 0x04)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether or not a batch sample has data
Use in SAMPLE_INFO inside BATCH_DATA messages.
*/
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_D_FLAG ((MIGRtpsSubmessageFlag) 0x08)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether a batch sample is valid or invalid
Use in SAMPLE_INFO inside BATCH_DATA messages.
*/
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_I_FLAG ((MIGRtpsSubmessageFlag) 0x10)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief tells whether or not a batch sample has the serialized key or not
Use in SAMPLE_INFO inside BATCH_DATA messages.
*/
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_K_FLAG ((MIGRtpsSubmessageFlag) 0x20)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief In an APP_ACK message, for a concrete ack'd
sn interval indicates if the payload is invalid
Use in APP_ACK messages.
*/
#define MIG_RTPS_APP_ACK_I_FLAG ((MIGRtpsSubmessageFlag) 0x01)
/*e \ingroup MIGRtpsSubmessageFlagClass
\brief In SecureSubMsg messages. Used for security.
*/
#define MIG_RTPS_SUBMESSAGE_SECURITY_FLAG_MULTI_SUBMESSAGE \
((MIGRtpsSubmessageFlag) 0x02)
/* ============ */
/* END OF FLAGS */
/* ============ */
/* =============== */
/* PRODUCT VERSION */
/* =============== */
/*e \ingroup MIGRtpsClass
\brief 1.0 version of protocol, which NDDS 3.0 implements
This definition must always be defined so we always have a default value
in the case that it is not specified by a remote node.
*/
#define MIG_RTPS_PROTOCOL_VERSION_1_0 (0x0100)
/*e \ingroup MIGRtpsClass
\brief 1.1 version of protocol.
This definition must always be defined so we always have a default value
in the case that it is not specified by a remote node.
*/
#define MIG_RTPS_PROTOCOL_VERSION_1_1 (0x0101)
/*e \ingroup MIGRtpsClass
\brief 1.2 version of protocol.
This definition must always be defined so we always have a default value
in the case that it is not specified by a remote node.
*/
#define MIG_RTPS_PROTOCOL_VERSION_1_2 (0x0102)
/*e \ingroup MIGRtpsClass
\brief 2.0 version of protocol.
This definition must always be defined so we always have a default value
in the case that it is not specified by a remote node.
*/
#define MIG_RTPS_PROTOCOL_VERSION_2_0 (0x0200) /*RTPS.2.0*/
#define MIG_RTPS_PROTOCOL_VERSION_2_1 (0x0201)
#define MIG_RTPS_PROTOCOL_VERSION_2_2 (0x0202)
#define MIG_RTPS_PROTOCOL_VERSION_2_3 (0x0203)
#define MIG_RTPS_PROTOCOL_VERSION_2_4 (0x0204)
#define MIG_RTPS_PROTOCOL_VERSION_2_5 (0x0205)
/*e \ingroup MIGRtpsClass
\brief Version of protocol this MIG module supports.
*/
#define MIG_RTPS_PROTOCOL_VERSION MIG_RTPS_PROTOCOL_VERSION_2_5 /* RTPS.2.5 */
/*
MIG_RTPS_PROTOCOL_VERSION 2.3 is DDSI-RTPS specification 2.2 + changes added by
DDS Security 1.1
MIG_RTPS_PROTOCOL_VERSION 2.4 is DDSI-RTPS specification 2.3
*/
/*e \ingroup MIGRtpsClass
\brief Major version of protocol this MIG module supports.
*/
#define MIG_RTPS_PROTOCOL_VERSION_MAJOR RTI_XCDR_RTPS_PROTOCOL_VERSION_MAJOR
/*e \ingroup MIGRtpsClass
\brief Minor version of protocol this MIG module supports.
*/
#define MIG_RTPS_PROTOCOL_VERSION_MINOR RTI_XCDR_RTPS_PROTOCOL_VERSION_MINOR
/*e \ingroup MIGRtpsClass
\brief Unknown version of the protocol.
*/
#define MIG_RTPS_PROTOCOL_VERSION_UNKNOWN (0x0000)
/**
* When a product version is equal to this value, it means that the product
* version is unknown (see documentation for the DDS_PRODUCTVERSION_UNKNOWN
* initializer of the equivalent DDS_ProductVersion_t type).
*
* The local product version is populated when the participant is created (see
* DDS_DomainParticipantPresentation_initialize).
* The remote product version is populated when asserting the remote endpoint
* (see PRESPsService_assertRemoteEndpointEx).
* It is also part of the builtin participant topic data and used in security
* to populate PRESTrustedParticipantInfo.
*
* Depending on its value, (de)serialization of the directed samples's GUID
* will be done in native endianness or in big endian. The default initializer
* value means that (de)serialization will be the default one: big endian.
*/
#define MIG_RTPS_PRODUCT_VERSION_MAJOR_DEFAULT 0
#define MIG_RTPS_PRODUCT_VERSION_MINOR_DEFAULT 0
#define MIG_RTPS_PRODUCT_VERSION_RELEASE_DEFAULT 0
#define MIG_RTPS_PRODUCT_VERSION_REVISION_DEFAULT 0
#define MIGRtpsProductVersion_INITIALIZER \
{ \
MIG_RTPS_PRODUCT_VERSION_MAJOR_DEFAULT, \
MIG_RTPS_PRODUCT_VERSION_MINOR_DEFAULT, \
MIG_RTPS_PRODUCT_VERSION_RELEASE_DEFAULT, \
MIG_RTPS_PRODUCT_VERSION_REVISION_DEFAULT \
}
/**
* Used to detect if we are setting the product version in writeParams.
* Setting the productVersion in writeParams is necessary to send a direct
* sample.
*/
#define MIG_RTPS_PRODUCT_VERSION_INVALID_INITIALIZER \
{ \
-1, -1, -1, -1 \
}
/* ====================== */
/* END OF PRODUCT VERSION */
/* ====================== */
/* ====== */
/* VENDOR */
/* ====== */
/*e \ingroup MIGRtpsClass
RTI vendor ID major.
*/
#define MIG_RTPS_VENDOR_ID_MAJOR RTI_XCDR_RTPS_VENDOR_ID_MAJOR
/*e \ingroup MIGRtpsClass
RTI vensor ID minor.
*/
#define MIG_RTPS_VENDOR_ID_MINOR RTI_XCDR_RTPS_VENDOR_ID_MINOR
/*e \ingroup MIGRtpsClass
RTI vendor ID (Pro)
*/
#define MIG_RTPS_VENDOR_ID_RTI (0x0101)
/*e \ingroup MIGRtpsClass
RTI vendor ID (Micro)
*/
#define MIG_RTPS_VENDOR_ID_RTI_MICRO (0x010a)
/*e \ingroup MIGRtpsClass
Unknown/undeclared vendor.
*/
#define MIG_RTPS_VENDOR_ID_UNKNOWN (0x0000)
/* ============= */
/* END OF VENDOR */
/* ============= */
/* ============================================================= */
/* RTPS SPECIFICATION PID DEFINITIONS (MUST UNDERSTAND == FALSE) */
/* ============================================================= */
/*e \ingroup MIGRtpsPidModule
Mask for ParameterId bit indicating subspace where
unrecognized PIDs are either ignored or treated as
incompatible QoS
*/
#define MIG_RTPS_PID_INCOMPATIBLE_MASK (0x4000)
/*e \ingroup MIGRtpsPidModule
Mask for ParameterId bit indicating subspace where
unrecognized PIDs are either ignored or treated as
incompatible QoS
*/
#define MIG_RTPS_EXTENDED_PID_INCOMPATIBLE_MASK (0x40000000)
/*e \ingroup MIGRtpsPidModule
Mask for ParameterId bit indicating if the PIDs
is vendor specific
*/
#define MIG_RTPS_EXTENDED_PID_VENDORSPECIFIC_MASK (0x80000000)
/*e \ingroup MIGRtpsPidModule
Pad for parameter values in case they don't end on a 4-byte boundary
*/
#define MIG_RTPS_PID_PAD (0x0000)
/*e \ingroup MIGRtpsPidModule
Indicate end of parameter sequence.
*/
#define MIG_RTPS_PID_SENTINEL (0x0001)
/*e \ingroup MIGRtpsPidModule
Allows the specification of large member ID and/or data length values;
*/
#define MIG_RTPS_PID_EXTENDED (0x3F01)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::userDataQosPolicy : UserDataQosPolicy,
Subscription::userDataQosPolicy : UserDataQosPolicy
Application::userDataQosPolicy : UserDataQosPolicy
*/
#define MIG_RTPS_PID_USER_DATA (0x002c)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::topic : PathName, Subscription::topic : PathName
*/
#define MIG_RTPS_PID_TOPIC_NAME (0x0005)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::typeName : TypeName,
Subscription::typeName : TypeName
*/
#define MIG_RTPS_PID_TYPE_NAME (0x0007)
/*e \ingroup MIGRtpsPidModule
* Used for domain ID
*/
#define MIG_RTPS_PID_DOMAIN_ID (0x000F)
/*e \ingroup MIGRtpsPidModule
* Used for domain Tag. Must understand flag is set upon send (resulting on
* PID 0x4014).
*/
#define MIG_RTPS_PID_DOMAIN_TAG (0x0014)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::groupDataQosPolicy : GroupDataQosPolicy,
Subscription::groupDataQosPolicy : GroupDataQosPolicy
*/
#define MIG_RTPS_PID_GROUP_DATA (0x002d)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::topicDataQosPolicy : TopicDataQosPolicy,
Subscription::topicDataQosPolicy : TopicDataQosPolicy
*/
#define MIG_RTPS_PID_TOPIC_DATA (0x002e)
/*e \ingroup MIGRtpsPidModule
Used for field Publicatoin::durabilityQosPolicy : DurabilityQosPolicy
Used for field Subscription::durabilityQosPolicy : DurabilityQosPolicy
*/
#define MIG_RTPS_PID_DURABILITY (0x001d)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::durabilityQosPolicy : DurabilityServiceQosPolicy
Used for field Topic::durabilityQosPolicy : DurabilityServiceQosPolicy
*/
#define MIG_RTPS_PID_DURABILITY_SERVICE (0x001e)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::deadlineQosPolicy : DeadlineQosPolicy
*/
#define MIG_RTPS_PID_DEADLINE (0x0023)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::latencyBudgetQosPolicy : LatencyBudgetQosPolicy
*/
#define MIG_RTPS_PID_LATENCY_BUDGET (0x0027)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::livelinessQosPolicy : LivelinessQosPolicy
Used for field Subscription::livelinessQosPolicy : LivelinessQosPolicy
*/
#define MIG_RTPS_PID_LIVELINESS (0x001b)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::reliabilityOffered : RTI_UINT32
Used for field Subscription::reliabilityRequested : RTI_UINT32
*/
#define MIG_RTPS_PID_RELIABILITY (0x001a)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::lifespanQosPolicy : LifespanQosPolicy
*/
#define MIG_RTPS_PID_LIFESPAN (0x002b)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::destinationOrderQosPolicy :
DestinationOrderQosPolicy
*/
#define MIG_RTPS_PID_DESTINATION_ORDER (0x0025)
/*e \ingroup MIGRtpsPidModule
Used for field Topic::history : HistoryQosPolicy
*/
#define MIG_RTPS_PID_HISTORY (0x0040)
/*e \ingroup MIGRtpsPidModule
Used for field Topic::resourceLimits : ResourceLimitsQosPolicy
*/
#define MIG_RTPS_PID_RESOURCE_LIMITS (0x0041)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::ownershipQosPolicy : OwnershipQosPolicy
*/
#define MIG_RTPS_PID_OWNERSHIP (0x001f)
/*e \ingroup MIGRtpsPidModule
Used for field Publication::strength : long
*/
#define MIG_RTPS_PID_OWNERSHIP_STRENGTH (0x0006)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::presentationQosPolicy : PresentationQosPolicy
*/
#define MIG_RTPS_PID_PRESENTATION (0x0021)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::partitionQosPolicy : PartitionQosPolicy
*/
#define MIG_RTPS_PID_PARTITION (0x0029)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::minimumSeparation : NtpTime, AKA
Used for field Subscription::time_based_filter : TimeBasedFilterQosPolicy
*/
#define MIG_RTPS_PID_TIME_BASED_FILTER (0x0004)
/*e \ingroup MIGRtpsPidModule */
#define MIG_RTPS_PID_TRANSPORT_PRIORITY (0x0049)
/*e \ingroup MIGRtpsPidModule
Used for field Application::protocolVersion : ProtocolVersion
*/
#define MIG_RTPS_PID_PROTOCOL_VERSION (0x0015)
/*e \ingroup MIGRtpsPidModule
Used for field Application::vendorId : VendorId
*/
#define MIG_RTPS_PID_VENDOR_ID (0x0016)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
*/
#define MIG_RTPS_PID_UNICAST_LOCATOR6 (0x002f)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX
*/
#define MIG_RTPS_PID_MULTICAST_LOCATOR6 (0x0030)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX
Used for field Reader::userdataMulticastIPAddressList : IPAddress[]
*/
#define MIG_RTPS_PID_MULTICAST_IPADDRESS (0x0011)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
*/
#define MIG_RTPS_PID_DEFAULT_UNICAST_LOCATOR6 (0x0031)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
*/
#define MIG_RTPS_PID_DEFAULT_MULTICAST_LOCATOR6 (0x0048)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
*/
#define MIG_RTPS_PID_METATRAFFIC_UNICAST_LOCATOR6 (0x0032)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX
*/
#define MIG_RTPS_PID_METATRAFFIC_MULTICAST_LOCATOR6 (0x0033)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_APP_IPADDRESS_COUNT_MAX
Used for field Application::unicastIPAddressList : IPAddress[]
*/
#define MIG_RTPS_PID_DEFAULT_UNICAST_IPADDRESS (0x000c)
/*e \ingroup MIGRtpsPidModule
Used for field Application::userdataUnicastPort :Port
*/
#define MIG_RTPS_PID_DEFAULT_UNICAST_PORT (0x000e)
/*e \ingroup MIGRtpsPidModule
Used for field ParticipantProxy::metatrafficUnicastLocatorList.address :
IPv4Address_t
*/
#define MIG_RTPS_PID_METATRAFFIC_UNICAST_IPADDRESS (0x0045)
/*e \ingroup MIGRtpsPidModule
Used for field Application::metatrafficUnicastPort : Port
*/
#define MIG_RTPS_PID_METATRAFFIC_UNICAST_PORT (0x000d)
/*e \ingroup MIGRtpsPidModule
Array of max size MIG_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS_COUNT_MAX
Used for field Application::metatrafficMulticastIPAddressList: IPAddress[]
*/
#define MIG_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS (0x000b)
/*e \ingroup MIGRtpsPidModule
*/
#define MIG_RTPS_PID_METATRAFFIC_MULTICAST_PORT (0x0046)
/*e \ingroup MIGRtpsPidModule
boolean
*/
#define MIG_RTPS_PID_EXPECTS_INLINE_QOS (0x0043)
/*e \ingroup MIGRtpsPidModule
Used for field DomainParticipant::manualLivelinessCount : unsigned long
*/
#define MIG_RTPS_PID_MANUAL_LIVELINESS_COUNT (0x0034)
/*e \ingroup MIGRtpsPidModule
*/
#define MIG_RTPS_PID_PARTICIPANT_BUILTIN_ENDPOINTS (0x0044)
/*e \ingroup MIGRtpsPidModule
Used for field SDPParticipantData::leaseDuration NtpTime
*/
#define MIG_RTPS_PID_LEASE_DURATION (0x0002)
/*e \ingroup MIGRtpsPidModule
Used for field Subscription::contentFilteredTopicProperties
*/
#define MIG_RTPS_PID_CONTENT_FILTER_PROPERTY (0x0035)
/*e \ingroup MIGRtpsPidModule
Used for field Participant::propertyList
*/
#define MIG_RTPS_PID_PROPERTY_LIST (0x0059)
/*e \ingroup MIGRtpsPidModule
Used for participant GUID
*/
#define MIG_RTPS_PID_PARTICIPANT_GUID (0x0050)
/*e \ingroup MIGRtpsPidModule
Used for participant entity ID
*/
#define MIG_RTPS_PID_PARTICIPANT_ENTITY_ID (0x0051)
/*e \ingroup MIGRtpsPidModule
Used for GROUP GUID
*/
#define MIG_RTPS_PID_GROUP_GUID (0x0052)
/*e \ingroup MIGRtpsPidModule
Used for Group OID
*/
#define MIG_RTPS_PID_GROUP_ENTITY_ID (0x0053)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate filter signature inline Qos
*/
#define MIG_RTPS_PID_FILTER_SIGNATURE (0x0055)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate coherent set inline Qos
*/
#define MIG_RTPS_PID_COHERENT_SET (0x0056)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate directed write inline Qos
*/
#define MIG_RTPS_PID_DIRECTED_WRITE (0x0057)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate builtin endpoint set inline Qos
*/
#define MIG_RTPS_PID_BUILTIN_ENDPOINT_MASK (0x0058)
/*e \ingroup MIGRtpsParameterSequenceClass
*/
#define MIG_RTPS_PID_ENDPOINT_GUID (0x005A)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate max sample serialized size inline Qos
*/
#define MIG_RTPS_PID_MAX_SAMPLE_SERIALIZED_SIZE (0x0060)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate original writer info inline Qos
*/
#define MIG_RTPS_PID_ORIGINAL_WRITER_INFO (0x0061)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate entity name inline Qos
*/
#define MIG_RTPS_PID_ENTITY_NAME (0x0062)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate group coherent set inline Qos
*/
#define MIG_RTPS_PID_GROUP_COHERENT_SET (0x0063)
/*e \ingroup MIGRtpsParameterSequenceClass
*/
#define MIG_RTPS_PID_KEY_HASH (0x0070)
/*e \ingroup MIGRtpsParameterSequenceClass
*/
#define MIG_RTPS_PID_STATUS_INFO (0x0071)
/*e \ingroup MIGRtpsParameterSequenceClass
XTypes
*/
#define MIG_RTPS_PID_TYPE_OBJECT (0x0072)
/*e \ingroup MIGRtpsPidModule
Data Representation - supported by reader, writer, topic
Allows data representation supported by the entity
*/
#define MIG_RTPS_PID_DATA_REPRESENTATION (0x0073)
/*e \ingroup MIGRtpsParameterSequenceClass
XTypes
*/
#define MIG_RTPS_PID_TYPE_CONSISTENCY (0x0074)
/*e \ingroup MIGRtpsParameterSequenceClass
XTypes
*/
#define MIG_RTPS_PID_TYPE_INFORMATION_V2 (0x0075)
/*e \ingroup MIGRtpsParameterSequenceClass
XTypes
*/
#define MIG_RTPS_PID_BASE_TYPE_NAME (0x0076)
/*e \ingroup MIGRtpsParameterSequenceClass
* RTPS 2.3 Liveliness.
*/
#define MIG_RTPS_PID_BUILTIN_ENDPOINT_QOS (0x0077)
/*e \ingroup MIGRtpsParameterSequenceClass
* Used for propagating the related DW/DR GUID in enhanced RPC discovery.
*/
#define MIG_RTPS_PID_RELATED_ENTITY_GUID (0x0081)
/*e \ingroup MIGRtpsParameterSequenceClass
* Security
*/
#define MIG_RTPS_PID_IDENTITY_TOKEN (0x1001)
#define MIG_RTPS_PID_PERMISSIONS_TOKEN (0x1002)
#define MIG_RTPS_PID_DATA_TAGS (0x1003)
#define MIG_RTPS_PID_ENDPOINT_SECURITY_PROTECTION_INFO (0x1004)
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_PROTECTION_INFO (0x1005)
/**
* DDS-Security implementations that support DDS-XTYPES shall advertise the
* availability of the Secure TypeLookup Built-In Endpoints using the Parameter
* with ID PID_AVAILABLE_BUILTIN_ENDPOINTS_EXT
*/
#define MIG_RTPS_PID_AVAILABLE_BUILTIN_ENDPOINTS_EX (0x1007)
/*
* 0x1006 is reserved for PID_IDENTITY_STATUS_TOKEN (Secure DDS 1.1,
* sec. 7.4.1.6) that we currently do not support.
*/
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGO (0x1010)
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGO (0x1011)
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGO (0x1012)
#define MIG_RTPS_PID_ENDPOINT_SECURITY_SYMMETRIC_CIPHER_ALGO (0x1013)
/*
* NOTE: if you are adding a discovery-related PID, you need to do it here
* and add a redefinition in disc rtps.ifc.
*/
/* ========================================= */
/* END OF RTPS SPECIFICATION PID DEFINITIONS */
/* ========================================= */
/* ============================================================== */
/* RTI VENDOR SPECIFIC PID DEFINITIONS (MUST UNDERSTAND == FALSE) */
/* ============================================================== */
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Participant::productVersion
*/
#define MIG_RTPS_PID_PRODUCT_VERSION (0x8000)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Participant::pluginPromiscuityKind
*/
#define MIG_RTPS_PID_PLUGIN_PROMISCUITY_KIND_DEPRECATED (0x8001)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field:
- Publication::virtualGuid
*/
#define MIG_RTPS_PID_ENTITY_VIRTUAL_GUID (0x8002)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field:
- Publication::serviceKind
- Subscription::serviceKind
*/
#define MIG_RTPS_PID_SERVICE (0x8003)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for TypeCode information
*/
#define MIG_RTPS_PID_TYPECODE (0x8004)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for TypeCode information
*/
#define MIG_RTPS_PID_DISABLE_ACKS (0x8005)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for Locator Filter information
*/
#define MIG_RTPS_PID_LOCATOR_FILTER_LIST (0x8006)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for Encapsulation information
*/
#define MIG_RTPS_PID_UNICAST_LOCATOR6_EX (0x8007)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for Encapsulation information
*/
#define MIG_RTPS_PID_MULTICAST_LOCATOR6_EX (0x8008)
/*e \ingroup MIGRtpsParameterSequenceClass
Used to indicate if virtual HB are expected
*/
#define MIG_RTPS_PID_EXPECTS_VIRTUAL_HB (0x8009)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for Role Name information
*/
#define MIG_RTPS_PID_ROLE_NAME (0x800A)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for Role Name information
*/
#define MIG_RTPS_PID_ACK_KIND (0x800B)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for Encapsulation information
*/
#define MIG_RTPS_PID_PRESENTATION_EX (0x800C)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field:
- Publisher::virtualGuid
This parameter is used only with GROUP access
*/
#define MIG_RTPS_PID_GROUP_VIRTUAL_GUID (0x800D)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for peer host update
*/
#define MIG_RTPS_PID_PEER_HOST_EPOCH_DEPRECATED (0x800E)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for domain ID
*/
#define MIG_RTPS_PID_RTI_DOMAIN_ID (0x800F)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate related original writer info inline Qos
*/
#define MIG_RTPS_PID_RELATED_ORIGINAL_WRITER_INFO (0x0083)
#define MIG_RTPS_PID_RELATED_ORIGINAL_WRITER_INFO_LEGACY (0x800F)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate related reader GUID inline Qos
*/
#define MIG_RTPS_PID_RELATED_READER_GUID (0x8010)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for propagating transport settings
*/
#define MIG_RTPS_PID_TRANSPORT_INFO_LIST (0x8010)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate source GUID inline Qos
*/
#define MIG_RTPS_PID_SOURCE_GUID (0x8011)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for propagating the direct communication setting in
a PERSISTENT or TRANSIENT DR
*/
#define MIG_RTPS_PID_DIRECT_COMMUNICATION (0x8011)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate related source GUID inline Qos
*/
#define MIG_RTPS_PID_RELATED_SOURCE_GUID (0x8012)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate TopicQuery GUID inline Qos
*/
#define MIG_RTPS_PID_TOPIC_QUERY_GUID (0x8013)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for propagating the topic-query-publication property
*/
#define MIG_RTPS_PID_TOPIC_QUERY_PUBLICATION (0x8014)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for propagating the endpoint property change epoch
*/
#define MIG_RTPS_PID_ENDPOINT_PROPERTY_CHANGE_EPOCH (0x8015)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for propagating the participant locator reachability lease expiration
*/
#define MIG_RTPS_PID_REACHABILITY_LEASE_DURATION (0x8016)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for propagating the vendor-specific endpoints for a participant
*/
#define MIG_RTPS_PID_VENDOR_BUILTIN_ENDPOINT_MASK (0x8017)
/*e \ingroup MIGRtpsParameterSequenceClass
* Used for propagating the vendor-specific endpoint security attributes.
*/
#define MIG_RTPS_PID_ENDPOINT_SECURITY_ATTRIBUTES (0x8018)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate sample signature inline Qos
*/
#define MIG_RTPS_PID_SAMPLE_SIGNATURE (0x8019)
/*e \ingroup MIGRtpsParameterSequenceClass
Indicate sample epoch in metp
*/
#define MIG_RTPS_PID_SAMPLE_EPOCH (0x8020)
/*e \ingroup MIGRtpsParameterSequenceClass
* Compressed version of the TYPE_OBJECT
*/
#define MIG_RTPS_PID_TYPE_OBJECT_LB (0x8021)
/*e \ingroup MIGRtpsParameterSequenceClass
* Identifies the coherent set for an end coherent set sample
*/
#define MIG_RTPS_PID_END_COHERENT_SET (0x8022)
/*e \ingroup MIGRtpsParameterSequenceClass
* Identifies the group coherent set for an end coherent set sample
*/
#define MIG_RTPS_PID_END_GROUP_COHERENT_SET (0x8023)
/*e \ingroup MIGRtpsParameterSequenceClass
* Number of samples in a coherent set for a given DW
*/
#define MIG_RTPS_PID_END_COHERENT_SET_SAMPLE_COUNT (0x8024)
/*e \ingroup MIGRtpsParameterSequenceClass
* Whether instance state consistency is enabled
*/
#define MIG_RTPS_PID_ISC_KIND (0x8025)
/*e \ingroup MIGRtpsParameterSequenceClass
* Used for propagating vendor-specific participant security attributes.
*/
#define MIG_RTPS_PID_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO (0x8026)
/*e \ingroup MIGRtpsParameterSequenceClass
* Number of samples published in response to a snapshot TopicQuery.
* This inline QoS is only part of the last sample.
*/
#define MIG_RTPS_PID_TOPIC_QUERY_SAMPLE_COUNT (0x8027)
/*e \ingroup MIGRtpsParameterSequenceClass
*
* Used to propagate topic alias names.
*/
#define MIG_RTPS_PID_TOPIC_NAME_ALIASES (0x8028)
/*e \ingroup MIGRtpsParameterSequenceClass
*
* Used to propagate type alias names.
*/
#define MIG_RTPS_PID_TYPE_NAME_ALIASES (0x8029)
/*e \ingroup MIGRtpsParameterSequenceClass
*
* Used to indicate whether the reliability kind needs to match exactly,
* when matching publications and subscriptions.
*/
#define MIG_RTPS_PID_EXACT_RELIABILITY_KIND_MATCH (0x802A)
/*e \ingroup MIGRtpsParameterSequenceClass
*
* Used to send information about the features that this type supports.
* For example, a type can support zero copy and/or flat data.
* Prior to TypeObjectV2, this information was sent in the TypeObjectV1 object.
*/
#define MIG_RTPS_PID_TYPE_PROPERTIES (0x802B)
/*e \ingroup MIGRtpsParameterSequenceClass
* Used to indicate that the number of samples published in response to a
* snapshot TopicQuery is unknown.
*
* This is a special value for the MIG_RTPS_PID_TOPIC_QUERY_SAMPLE_COUNT
* parameter. If the value of this parameter is
* MIG_TOPIC_QUERY_SAMPLE_COUNT_UNKNOWN, or not present, the number of samples
* published in response to a snapshot TopicQuery is unknown.
*/
#define MIG_TOPIC_QUERY_SAMPLE_COUNT_UNKNOWN (-1)
/*e \ingroup MIGRtpsParameterSequenceClass
* Used for propagating vendor-specific builtin endpoint attributes.
*/
#define MIG_RTPS_PID_VENDOR_BUILTIN_ENDPOINT_QOS (0x8077)
/*
* NOTE 1: if you are adding a discovery-related PID, you need to do it here
* and add a redefinition in disc rtps.ifc.
*
* NOTE 2: we decided NOT TO REUSE vendor specific GUIDs from now on. Even if
* they are used in different contexts (inline qos vs discovery). The only
* exceptions to this rule are relate_reader_guid/transport_info_list, and
* source_guid/direct_communication.
*/
/* ========================================== */
/* END OF RTI VENDOR SPECIFIC PID DEFINITIONS */
/* ========================================== */
/* ========================== */
/* DEPRECATED PID DEFINITIONS */
/* ========================== */
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Publication::persistence : NtpTime
*/
#define MIG_RTPS_PID_PERSISTENCE_DEPRECATED (0x0003)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Publication::typeChecksum : TypeChecksum,
Subscription::typeChecksum : TypeChecksum
*/
#define MIG_RTPS_PID_TYPE_CHECKSUM_DEPRECATED (0x0008)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for client server.
*/
#define MIG_RTPS_PID_TYPE2_NAME_DEPRECATED (0x0009)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for client server.
*/
#define MIG_RTPS_PID_TYPE2_CHECKSUM_DEPRECATED (0x000a)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Publication::expectsAck : boolean
*/
#define MIG_RTPS_PID_EXPECTS_ACK_DEPRECATED (0x0010)
/*e \ingroup MIGRtpsParameterSequenceClass
Array of max size MIG_RTPS_PID_MANAGER_KEY_COUNT_MAX
Used for field Application::managerKeyList : unsigned long []
*/
#define MIG_RTPS_PID_MANAGER_KEY_DEPRECATED (0x0012)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Publication::sendQueueSize : unsigned long.
*/
#define MIG_RTPS_PID_SEND_QUEUE_SIZE_DEPRECATED (0x0013)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Manager::vargAppsSequenceNumberLast : SequenceNumber
*/
#define MIG_RTPS_PID_VARGAPPS_SEQUENCE_NUMBER_LAST_DEPRECATED (0x0017)
/*e \ingroup MIGRtpsParameterSequenceClass
Used for field Subscription::recvQueueSize : unsigned long
*/
#define MIG_RTPS_PID_RECV_QUEUE_SIZE_DEPRECATED (0x0018)
/*e \ingroup MIGRtpsPidModule
DEPRECATED: Used for TypeCode information
*/
#define MIG_RTPS_PID_TYPECODE_DEPRECATED (0x0047)
/* ================================= */
/* END OF DEPRECATED PID DEFINITIONS */
/* ================================= */
/* ====== */
/* MACROS */
/* ====== */
#define MIGRtpsAppAckPerVirtualWriter_attachedToParent(self) \
((self)->_node.inlineList != NULL)
#define MIGRtpsAppAckPerVirtualWriter_getIntervalCount(self) \
((RTI_UINT32) ((self)->_list \
? REDASkiplist_getNodeCount(&(self)->_list->list) \
: ((self)->_interval ? 1 : (self)->_numIntervals)))
#define MIGRtpsAppAck_getVirtualWriterCount(self) \
((RTI_UINT32) ((self)->_list ? (RTI_UINT32) REDAInlineList_getSize( \
(self)->_list) \
: (self)->_numVirtualWriters))
#define MIGRtpsObjectId_isParticipantAnnouncementReader(oid__) \
((oid__) == MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_READER \
|| (oid__) \
== MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER)
#define MIGRtpsObjectId_isParticipantAnnouncementWriter(oid__) \
((oid__) == MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER \
|| (oid__) \
== MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER)
#define MIGRtpsObjectId_isTypeLookupServiceRequestWriter(oid__) \
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
|| (oid__) \
== MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_WRITER)
#define MIGRtpsObjectId_isTypeLookupServiceRequestReader(oid__) \
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_READER \
|| (oid__) \
== MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_READER)
#define MIGRtpsObjectId_isTypeLookupServiceReplyWriter(oid__) \
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_WRITER \
|| (oid__) == MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_WRITER)
#define MIGRtpsObjectId_isTypeLookupServiceReplyReader(oid__) \
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_READER \
|| (oid__) == MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_READER)
#define MIGRtpsObjectId_isTypeLookupServiceWriter(oid__) \
MIGRtpsObjectId_isTypeLookupServiceRequestWriter((oid__)) \
|| MIGRtpsObjectId_isTypeLookupServiceReplyWriter((oid__))
#define MIGRtpsObjectId_isTypeLookupServiceReader(oid__) \
MIGRtpsObjectId_isTypeLookupServiceRequestReader((oid__)) \
|| MIGRtpsObjectId_isTypeLookupServiceReplyReader((oid__))
/* ============= */
/* END OF MACROS */
/* ============= */
/* ======= */
/* RENAMES */
/* ======= */
/*e \ingroup MIGRtpsClass */
#define MIGRtpsGuid RTIOsapiRtpsGuid
/*e \ingroup MIGRtpsClass */
#define MIGRtpsGuidPrefix RTIOsapiRtpsGuidPrefix
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_CRC_KIND_DEFAULT MIG_RTPS_CRC_KIND_32
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_HEADER_EXTENSION_ENABLE_MESSAGE_LENGTH_DEFAULT RTI_FALSE
/*e \ingroup MIGRtpsClass */
#define MIG_RTPS_HEADER_EXTENSION_ENABLE_TIMESTAMP_DEFAULT RTI_FALSE
/* ============== */
/* END OF RENAMES */
/* ============== */
/* ============== */
/* END OF DEFINES */
/* ============== */
/* ================ */
/* TYPE DEFINITIONS */
/* ================ */
typedef enum {
MIG_ACK_KIND_DATA = 1,
MIG_ACK_KIND_BATCH = 2,
MIG_ACK_KIND_SESSION = 3
} MIGAckKind;
/*e \ingroup MIGRtpsClass */
typedef const char *MIGConstRtpsDomainTag;
/*e \ingroup MIGRtpsClass */
typedef RTI_UINT32 MIGRtpsAppId;
/*e \ingroup MIGRtpsClass
* \brief Different CRC kinds that can be used to compute CRC of RTPS message.
* The name of each kind contain the length of the CRC in bits.
*/
typedef enum {
MIG_RTPS_CRC_KIND_INVALID,
MIG_RTPS_CRC_KIND_32_LEGACY, /* crc algorithm pre-7.1.0, in a dedicated
submessage */
MIG_RTPS_CRC_KIND_32, /* RTPS-spec-defined CRC-32C (Castagnoli) */
MIG_RTPS_CRC_KIND_64, /* RTPS-spec-defined CRC-65/XZ */
MIG_RTPS_CRC_KIND_128 /* RTPS-spec-defined MD-5 */
} MIGRtpsCrcKind;
typedef RTI_UINT16 MIGRtpsDataFlags;
/*e \ingroup MIGRtpsClass */
typedef char *MIGRtpsDomainTag;
typedef enum {
MIG_HEARTBEAT_KIND_DATA = 1,
MIG_HEARTBEAT_KIND_BATCH = 2,
MIG_HEARTBEAT_KIND_SESSION = 3
} MIGHeartbeatKind;
/*e \ingroup MIGRtpsClass */
typedef RTI_UINT32 MIGRtpsHostId;
/*e \ingroup MIGRtpsClass */
typedef RTI_UINT32 MIGRtpsInstanceId; /*RTPS.2.0*/
/*e \ingroup MIGRtpsClass */
typedef RTI_UINT32 MIGRtpsObjectId;
/*e \ingroup MIGRtpsClass
\brief The first three bytes of the MIGRtpsObjectId. Known in the RTPS spec.
as the entityKey.
*/
typedef RTI_UINT32 MIGRtpsObjectKey;
/*e \ingroup MIGRtpsClass
* \brief The last byte of the MIGRtpsObjectId. Known in the RTPS spec. as the
* entityKind.
*
* RTPSObject is categorized into (normal/reserved) x (user/meta) quadrant.
* Within each quadrant, there are several built-in (provided for at the RTPS
* protocol level) objects, such as application, publication/subscription,
* CST writer/reader.
*
* 'Normal' refers to vendor-defined entities while 'Reserved' means 'reserved
* by the spec'.
* 'User' means that entity is discoverable (and most likely created by the
* user) and 'Meta' means builtin and non-discoverable (i.e., there is no
* discovery traffic generated by these endpoints).
*
*
* There are a number of different types of endpoints that we are currently
* creating. They are outlined here, along with which of the following suffixes
* they are created with.
*
* The bits within the entityKind byte can be viewed as kk tt tt tt.
* Where
* k = kind
* Identifies if the entity is Meta / Reserved / User. The current
* kind are
* 00 - User entity
* 01 - Vendor entity
* 10 - Builtin Entity
* 11 - Vendor Builtin Entity
* t = type
* Identifies the type of entity. If the two most significant bits are
* '11', it indicates the entity is virtual. The current types are
* 0x00 - Unknown
* 0x01 - Participant
* 0x02 - Keyed DataWriter
* 0x03 - Un-keyed DataWriter
* 0x04 - Un-keyed DataReader
* 0x07 - Keyed DataReader
* 0x08 - Writer Group
* 0x09 - Reader Group
* 0x0A - Topic
* 0x0B - Keyed Group DataWriter
* 0x0C - Un-keyed Group DataWriter
* 0x0D - Un-keyed Group DataReader
* 0x0E - Keyed Group DataReader
*
* Note: The Publishers and Subscribers associated with the following endpoint
* kinds will use the suffix from the same grouping as their endpoints, so they
* are not called out explicitly in the table
*
* Endpoint Kinds | Meta/Reserved bits
* --------------------------------------------------------------
* Liveliness | 11
* Anonymous | 11
* Builtin entities defined by the spec | 11
* PublicationBuiltinTopicData, |
* SubscriptionBuiltinTopisData, |
* ParticipantBuiltinTopicData |
* The user-accessible counterparts to the | 00 (followed by 11 to signify
* above built-in readers | 'virtual')
* User-created | 00
* Security spec endpoints | 11
* VirtualSubscriptionBuiltinTopicReader | 01
* ServiceRequestChannel, non-user exposed | 10
* ServiceRequestChannel, user-exposed | 00 (followed by 11 to signify
* reader | 'virtual')
* Locator Ping Channel | 10
*/
typedef enum {
MIG_RTPS_OBJECT_NORMAL_USER_UNKNOWN = 0x00,
MIG_RTPS_OBJECT_NORMAL_USER_APPLICATION = 0x01,
/*e Use this suffix for writers of data with a key. */
MIG_RTPS_OBJECT_NORMAL_USER_CST_WRITER = 0x02,
/*e Use this suffix for writers of data with no key. */
MIG_RTPS_OBJECT_NORMAL_USER_PUBLICATION = 0x03,
/*e Use this suffix for readers of data with no key. */
MIG_RTPS_OBJECT_NORMAL_USER_SUBSCRIPTION = 0x04,
/*e Use this suffix for readers of data with a key. */
MIG_RTPS_OBJECT_NORMAL_USER_CST_READER = 0x07,
MIG_RTPS_OBJECT_NORMAL_USER_WRITER_GROUP = 0x08,
MIG_RTPS_OBJECT_NORMAL_USER_READER_GROUP = 0x09,
MIG_RTPS_OBJECT_NORMAL_USER_TOPIC = 0x0a,
MIG_RTPS_OBJECT_NORMAL_USER_CST_GROUP_WRITER = 0x0b,
MIG_RTPS_OBJECT_NORMAL_USER_GROUP_WRITER = 0x0c,
MIG_RTPS_OBJECT_NORMAL_USER_GROUP_READER = 0x0d,
MIG_RTPS_OBJECT_NORMAL_USER_CST_GROUP_READER = 0x0e,
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_SUBSCRIPTION = 0x3C,
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_CST_READER = 0x3D,
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_READER_GROUP = 0x3e,
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_TOPIC = 0x3f,
MIG_RTPS_OBJECT_RESERVED_USER_UNKNOWN = 0x40,
MIG_RTPS_OBJECT_RESERVED_USER_APPLICATION = 0x41,
MIG_RTPS_OBJECT_RESERVED_USER_CST_WRITER = 0x42,
MIG_RTPS_OBJECT_RESERVED_USER_PUBLICATION = 0x43,
MIG_RTPS_OBJECT_RESERVED_USER_SUBSCRIPTION = 0x44,
MIG_RTPS_OBJECT_RESERVED_USER_CST_READER = 0x47,
MIG_RTPS_OBJECT_RESERVED_USER_WRITER_GROUP = 0x48,
MIG_RTPS_OBJECT_RESERVED_USER_READER_GROUP = 0x49,
MIG_RTPS_OBJECT_RESERVED_USER_TOPIC = 0x4a,
MIG_RTPS_OBJECT_RESERVED_USER_CST_GROUP_WRITER = 0x4b,
MIG_RTPS_OBJECT_RESERVED_USER_GROUP_WRITER = 0x4c,
MIG_RTPS_OBJECT_RESERVED_USER_GROUP_READER = 0x4d,
MIG_RTPS_OBJECT_RESERVED_USER_CST_GROUP_READER = 0x4e,
/*
* Virtual writers are not real writers
*
* One of the use case for virtual writers is to support the API
* DDS_DataReader_add_sample_to_remote_writer_queue, which allows users to
* add samples to a remote writer's queue without coming from
* a physical writer.
*/
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_CST_WRITER = 0x72,
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_PUBLICATION = 0x73,
MIG_RTPS_OBJECT_NORMAL_META_UNKNOWN = 0x80,
MIG_RTPS_OBJECT_NORMAL_META_APPLICATION = 0x81,
MIG_RTPS_OBJECT_NORMAL_META_CST_WRITER = 0x82,
MIG_RTPS_OBJECT_NORMAL_META_PUBLICATION = 0x83,
MIG_RTPS_OBJECT_NORMAL_META_SUBSCRIPTION = 0x84,
MIG_RTPS_OBJECT_NORMAL_META_CST_READER = 0x87,
MIG_RTPS_OBJECT_NORMAL_META_WRITER_GROUP = 0x88,
MIG_RTPS_OBJECT_NORMAL_META_READER_GROUP = 0x89,
MIG_RTPS_OBJECT_NORMAL_META_TOPIC = 0x8a,
MIG_RTPS_OBJECT_NORMAL_META_CST_GROUP_WRITER = 0x8b,
MIG_RTPS_OBJECT_NORMAL_META_GROUP_WRITER = 0x8c,
MIG_RTPS_OBJECT_NORMAL_META_GROUP_READER = 0x8d,
MIG_RTPS_OBJECT_NORMAL_META_CST_GROUP_READER = 0x8e,
MIG_RTPS_OBJECT_RESERVED_META_UNKNOWN = 0xc0,
MIG_RTPS_OBJECT_RESERVED_META_APPLICATION = 0xc1,
MIG_RTPS_OBJECT_RESERVED_META_CST_WRITER = 0xc2,
MIG_RTPS_OBJECT_RESERVED_META_PUBLICATION = 0xc3,
MIG_RTPS_OBJECT_RESERVED_META_SUBSCRIPTION = 0xc4,
MIG_RTPS_OBJECT_RESERVED_META_CST_READER = 0xc7,
MIG_RTPS_OBJECT_RESERVED_META_WRITER_GROUP = 0xc8,
MIG_RTPS_OBJECT_RESERVED_META_READER_GROUP = 0xc9,
MIG_RTPS_OBJECT_RESERVED_META_TOPIC = 0xca,
MIG_RTPS_OBJECT_RESERVED_META_CST_GROUP_WRITER = 0xcb,
MIG_RTPS_OBJECT_RESERVED_META_GROUP_WRITER = 0xcc,
MIG_RTPS_OBJECT_RESERVED_META_GROUP_READER = 0xcd,
MIG_RTPS_OBJECT_RESERVED_META_CST_GROUP_READER = 0xce
} MIGRtpsObjectSuffix;
/**
* Special GUIDs assigned to "fake" remote writers that are used by the API
* DDS_DataReader_add_sample_to_remote_writer_queue. This GUIDs should never be
* used by real writers
*/
/*
* The probability of collision using only 12 bytes of the hash is given
* by the birthday problem. With 12 bytes we have 2^96 possible values
* and the probability of collision is:
* P(n) = 1 - e^(-n^2/2m)
* where n is the number of different endpoints and m the number of possible
* values (2^96).
*
* For 10000000 million different endpoints the probability of collision is
* P(10,000,000) = 1 - e^(-10^14/2^97) whis is quite low.
*
* In addition there is no possible collision with the GUIDs we generate
* for real entities using UUID-based GUIDs (default) and
* DDS_RtpsAppIdGenerator_initialize_rtps_guid_prefix
* because these GUIDs conform to the RTPS spec and have the first two bytes
* matching the vendorId with a value of (0x01, 0x01) for Connext Pro.
*/
/* clang-format off */
#define MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID_PREFIX \
{ 0x5254495f, 0x50535f53, 0x53594e43 } /* ASCII for RTI_PS_SYNC */
/*
* GUID used to identify a keyed remote writer that will be used to inject
* samples into the ServiceTopic DataReader facing the user applications in
* persistence service when sync is enabled.
*/
#define MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID \
{ \
MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID_PREFIX, \
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_CST_WRITER \
}
/*
* GUID used to identify an unkeyed remote writer that will be used to inject
* samples into the ServiceTopic DataReader facing the user applications in
* persistence service when sync is enabled.
*/
#define MIG_PERSISTENCE_SERVICE_SYNC_UNKEYED_REMOTE_WRITER_GUID \
{ \
MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID_PREFIX, \
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_PUBLICATION \
}
/* clang-format on */
/*e \ingroup MIGRtpsPidModule
RTPS parameter ID, used to describe RTPS objects.
*/
typedef RTI_UINT16 MIGRtpsParameterId;
typedef struct MIGRtpsGuidPrefix MIGRtpsParticipantId;
/*e \ingroup MIGRtpsClass */
typedef RTI_UINT16 MIGRtpsProtocolVersion;
/*e \ingroup MIGRtpsClass
\brief Denotes reader or writer type.
*/
typedef enum {
MIG_RTPS_RW_TYPE_UNKNOWN,
MIG_RTPS_RW_TYPE_READER,
MIG_RTPS_RW_TYPE_WRITER
} MIGRtpsRWType;
/*e \ingroup MIGRtpsClass
\brief Denotes keyed (CST) or unkeyed (PS) type.
*/
typedef enum {
MIG_RTPS_SAMPLE_TYPE_UNKNOWN,
MIG_RTPS_SAMPLE_TYPE_CST,
MIG_RTPS_SAMPLE_TYPE_PS
} MIGRtpsSampleType;
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
typedef RTI_UINT32 MIGRtpsStatusInfo;
/*e \ingroup MIGRtpsClass
\brief RTPS submessage flags.
*/
typedef RTI_UINT8 MIGRtpsSubmessageFlag;
/*e \ingroup MIGRtpsClass
\brief RTPS submessage types.
*/
typedef enum {
/**************************************************************************
* IMPORTANT:
* Range 0x00 to 0x7f is reserved by the RTPS spec: this range cannot be
* used for vendor specific IDs. However, at the moment of writing this,
* we have multiple, out-of-spec IDs violating this. Only IDs defined
* in RTPS spec section 9.4.5.1.1 should be here. Accordingly to the spec,
* vendor specific IDs should be defined within [0x80, 0xff] range.
**************************************************************************/
/*e header extension */
MIG_RTPS_HEADER_EXTENSION = 0x00,
/*e padding */
MIG_RTPS_PAD = 0x01,
/*e CST variable */
MIG_RTPS_VAR = 0x02,
/*e P/S issue */
MIG_RTPS_ISSUE = 0x03,
/*e acknowledgement */
MIG_RTPS_ACK = 0x06,
/*e heartbeat */
MIG_RTPS_HEARTBEAT = 0x07,
/*e gap */
MIG_RTPS_GAP = 0x08,
/*e timestamp */
MIG_RTPS_INFO_TS = 0x09,
/*e message source */
MIG_RTPS_INFO_SRC = 0x0c,
/*e how to reply to sender using IPv4*/
MIG_RTPS_INFO_REPLY_IP4 = 0x0d, /*RTPS.2.0*/
/*e destination of the message; intended recipient */
MIG_RTPS_INFO_DST = 0x0e,
/*e how to reply to sender using IPv6 */
MIG_RTPS_INFO_REPLY = 0x0f, /*RTPS.2.0*/
/*e identifier for the data fragments submessage */
MIG_RTPS_DATA_FRAG_20 = 0x10, /*RTPS.2.0*/
/*e identifier for the no key data fragments submessage */
MIG_RTPS_NOKEY_DATA_FRAG = 0x11, /*RTPS.2.0*/
/*e identifier for the data fragments nack submessage */
MIG_RTPS_NACK_FRAG = 0x12, /*RTPS.2.0*/
/*e identifier for the data fragments heartbeat submessage */
MIG_RTPS_HEARTBEAT_FRAG = 0x13, /*RTPS.2.0*/
/*e data for locator-filter session */
MIG_RTPS_DATA_SESSION = 0x14,
/*e data */
MIG_RTPS_DATA = NDDS_TRANSPORT_UDP_DATA_SUBMESSAGE_ID, /* RTPS 2.1 */
/*e identifier for the data fragments submessage */
MIG_RTPS_DATA_FRAG = 0x16, /* RTPS 2.5 */
/*e batch ACKNACK */
MIG_RTPS_ACK_BATCH = 0x17, /* RTPS 2.1 */
/*e identifier for the data batch submessage */
MIG_RTPS_DATA_BATCH = 0x18, /*RTPS.2.1*/
/*e batch heartbeat */
MIG_RTPS_HEARTBEAT_BATCH = 0x19, /*RTPS.2.1*/
/*e session ACKNACK */
MIG_RTPS_ACK_SESSION = 0x1a,
/*e session Heartbeat */
MIG_RTPS_HEARTBEAT_SESSION = 0x1b,
/*e app-level ack */
MIG_RTPS_APP_ACK = 0x1c,
/*e app-level ack confirmation */
MIG_RTPS_APP_ACK_CONF = 0x1d,
/*e virtual heartbeat */
MIG_RTPS_HEARTBEAT_VIRTUAL = 0x1e,
/**************************************************************************
* IMPORTANT: End of basic id range, if new items are added to the basic
* range (which as maximum can span from 0x00 to 0x2F),
* MIG_RTPS_SUBMESSAGE_BASIC_ID_MAX must be updated.
*
* Per RTPS spec section 9.4.5.1.1.1, DDS Security 1.1 submessages should
* use ids from 0x30 to 0x3F. If this changes in the future and new DDS
* Security ids are added before this range,
* MIG_RTPS_SUBMESSAGE_SECURE_ID_MIN may need to be updated.
**************************************************************************/
/*e secure body submessage */
MIG_RTPS_SECURE_BODY = 0x30,
/*e secure prefix submessage */
MIG_RTPS_SECURE_PREFIX = 0x31,
/*e secure postfix submessage */
MIG_RTPS_SECURE_POSTFIX = 0x32,
/*e secure RTPS prefix submessage */
MIG_RTPS_SECURE_RTPS_PREFIX = 0x33,
/*e secure RTPS postfix submessage */
MIG_RTPS_SECURE_RTPS_POSTFIX = 0x34,
/**************************************************************************
* IMPORTANT: End of secure id range, if new items are added to the secure
* range (which as maximum can span from 0x30 to 0x3F),
* MIG_RTPS_SUBMESSAGE_SECURE_ID_MAX must be updated.
*
* Range from 0x40 to 0x7F is reserved for spec ids, but it is currently
* unused. If we (or the OMG) adds new ids in this range, a new range will
* need to be defined.
*
* Per RTPS spec section 9.4.5.1.1, vendor specific submessages should
* use ids from 0x80 to 0xFF. In current versions of RTI products,
* 0x80 is used for RTI CRC32 submessage. If this changes in the future,
* MIG_RTPS_SUBMESSAGE_VENDOR_ID_MIN will need to be updated.
*
* IMPORTANT: If we ever introduce or modify one of these, we should be
* synchronized with the Micro implementation of RTPS.
**************************************************************************/
/*e CRC32 */
MIG_RTPS_CRC32 = 0x80,
/*e data frag for locator-filter session */
MIG_RTPS_DATA_FRAG_SESSION = 0x81,
/*e UDPv4 WAN BINDING_PING */
MIG_RTPS_BINDING_PING = 0x82
/**************************************************************************
* IMPORTANT: End of vendor id range, if new items are added here,
* MIG_RTPS_SUBMESSAGE_VENDOR_ID_MAX must be updated.
*
* Note that while per RTPS spec, vendor specific submessages should
* use ids from 0x80 to 0xFF, MIG_RTPS_SUBMESSAGE_VENDOR_ID_MAX is set to
* the highest id we support.
**************************************************************************/
} MIGRtpsSubmessageId;
/*e \ingroup MIGRtpsClass */
typedef RTI_UINT16 MIGRtpsVendorId;
/* ======================= */
/* END OF TYPE DEFINITIONS */
/* ======================= */
/* ========== */
/* STRUCTURES */
/* ========== */
/* ==================== */
/* FORWARD DECLARATIONS */
/* ==================== */
struct MIGRtpsBitmap;
struct REDABuffer;
struct REDASequenceNumber;
struct RTICdrStream;
struct RTINetioLocator;
struct RTINtpTime;
/* =========================== */
/* END OF FORWARD DECLARATIONS */
/* =========================== */
/* ===================== */
/* STRUCTURE DEFINITIONS */
/* ===================== */
/*e \ingroup MIGRtpsClass
*
* A member of an AppAck structure, containing
* the SNs acknowledged for a given virtual writer.
*
*/
struct MIGRtpsAppAckPerVirtualWriter {
struct REDAInlineListNode _node;
struct MIGRtpsGuid virtualWriterGuid;
RTI_UINT32 epoch;
struct MIGRtpsAppAck *_parent;
/* If the buffer is set, we will iterate over a serialized message */
struct RTICdrStream _buffer;
RTI_UINT16 _curInterval;
struct REDASequenceNumberInterval _tmpInterval;
RTI_UINT16 _numIntervals;
/* If the list or interval are set, we will iterate over a deserialized
* message. Both buffer and (list or interval) cannot be set at the same
* time
*/
struct REDASequenceNumberIntervalList *_list;
struct REDASequenceNumberInterval *_interval;
const struct REDASkiplistNode *_curNode;
struct REDASequenceNumberInterval *_curIntervalNode;
};
/*e \ingroup MIGRtpsClass
*
* Represents an application-level acknowledgment.
* Contains the acknowledged sequence number intervals per virtual writer
* and the corresponding payloads (if enabled).
*
* Provides iteration methods through two different available representations
* of the APP_ACK message:
* - a serialized APP_ACK message contained in a loaned buffer
* - an inlineList of virtual writers, each containing a list of intervals
*
* When includesIntervals is false, this type represents an APP_ACK_CONF
* and only includes virtual writers guids and their epochs.
*/
struct MIGRtpsAppAck {
RTIBool includesIntervals;
/* If the buffer is set, we will iterate over a serialized message */
struct RTICdrStream _buffer;
RTI_UINT32 _curVirtualWriter;
RTI_UINT32 _numVirtualWriters;
struct MIGRtpsAppAckPerVirtualWriter _tmpVirtualWriter;
/*
* If the list is set, we will iterate over a deserialized message.
* Both buffer and list cannot be set at the same time
*/
struct REDAInlineList *_list;
struct REDAInlineListNode *_curNode;
};
struct MIGRtpsKeyHash {
RTICdrOctet value[MIG_RTPS_KEY_HASH_MAX_LENGTH];
RTI_UINT32 length;
};
/*e \ingroup MIGRtpsClass
*
* Equivalent to PRESProductVersion.
* Needed for the deserialization of the GUID when the PID is
* PID_DIRECTED_WRITE.
* The product version (protocol version and vendor) is read from the
* write_params and how serialization is performed will depend on it.
*/
struct MIGRtpsProductVersion {
RTICdrChar major;
RTICdrChar minor;
RTICdrChar release;
RTICdrChar revision;
};
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief public member fields
*/
struct MIGRtpsVirtualWriterInfo {
/*i \brief */
struct REDAInlineListNode _node;
/*e \brief Virtual GUID */
struct MIGRtpsGuid guid;
/*e \brief This is the last virtual sequence number provided by the physical
writer to the virtual queue
*/
struct REDASequenceNumber firstAvailableVirtualSn;
/*e \brief This is the last virtual sequence number that the physical
writer has for this virtual queue
*/
struct REDASequenceNumber lastAvailableVirtualSn;
/*e \brief This is the last RTPS sequence number provided by the physical
writer to the virtual queue
*/
struct REDASequenceNumber firstAvailableRtpsSn;
/*e \brief This is the last RTPS sequence number that the physical
writer has for this virtual queue
*/
struct REDASequenceNumber lastAvailableRtpsSn;
void *userData;
};
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief List of Virtual Writer Info. This is stored in the Session.
*/
struct MIGRtpsWriterInfo {
struct REDAInlineListNode _node;
/** Public members **/
/*e \brief guid of the physical writer that has this list of virtual writers
*/
struct MIGRtpsGuid guid;
/** Private members **/
/*i \brief pointer back to the MIGRtpsWriterInfoList to which this belongs
*/
struct MIGRtpsWriterInfoList *_writerInfoList;
struct REDAInlineList *_virtualWriterInfoList;
/* Private state used to manage iteration */
struct MIGRtpsVirtualWriterInfo _dummyVirtualWriterInfo;
struct MIGRtpsVirtualWriterInfo *_currentNode;
RTI_UINT32 _numVirtualGuids;
};
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief List of Physical Writer Info. This is stored in the Writer History
Driver.
*/
struct MIGRtpsWriterInfoList {
struct REDAInlineList *_writerInfoList;
struct RTICdrStream _cdrStream;
struct MIGRtpsWriterInfo _dummyWriterInfo;
struct MIGRtpsWriterInfo *_currentNode;
/*i \ingroup MIGRtpsVirtualWriterInfoClass
\brief FALSE if the CDR stream position is on the writer info list
boundary. TRUE otherwise.
*/
RTIBool _isIteratingOverWriterInfo;
/*i \ingroup MIGRtpsVirtualWriterInfoClass
\brief Which writer the CDR stream position is at. If you call
getNextWriterInfo, you will get the writerIndex-th writerInfo.
*/
RTI_UINT32 _writerIndex;
/*i \ingroup MIGRtpsVirtualWriterInfoClass
\brief TRUE if the CDR stream position is on a virtual writer info
boundary. FALSE otherwise.
*/
RTIBool _isIteratingOverVirtualWriterInfo;
/*i \ingroup MIGRtpsVirtualWriterInfoClass
\brief Which virtual writer (within the writerIndex) the CDR stream
position is at. If you call getNextVirtualWriterInfo, you will get
the virtualWriterIndex-th virtualWriterInfo.
*/
RTI_UINT32 _virtualWriterIndex;
RTIBool _wFlag;
RTIBool _vFlag;
RTIBool _nFlag;
RTI_UINT32 _numWriters;
};
struct MIGRtpsWriterInfoListState {
struct MIGRtpsWriterInfoList _virtualWriterInfoList;
struct MIGRtpsWriterInfo *_currentWriterInfo;
struct MIGRtpsVirtualWriterInfo *_currentVirtualWriterInfo;
};
/* ============================ */
/* END OF STRUCTURE DEFINITIONS */
/* ============================ */
/* ================= */
/* END OF STRUCTURES */
/* ================= */
/* ===================== */
/* VARIABLE DECLARATIONS */
/* ===================== */
extern MIGDllVariable const struct MIGRtpsProductVersion
MIG_RTPS_PRODUCT_VERSION_DEFAULT;
extern MIGDllVariable const struct MIGRtpsProductVersion
MIG_RTPS_PRODUCT_VERSION_CURRENT;
extern MIGDllVariable const struct MIGRtpsProductVersion
MIG_RTPS_PRODUCT_VERSION_INVALID;
extern MIGDllVariable const struct MIGRtpsProductVersion
MIG_RTPS_PRODUCT_VERSION_SEVEN;
/* ============================ */
/* END OF VARIABLE DECLARATIONS */
/* ============================ */
/* ===================== */
/* FUNCTION DECLARATIONS */
/* ===================== */
extern MIGDllExport RTIBool MIGRtps_deserializeUnsignedLong(
RTI_UINT32 *fourbytes,
const char **data,
RTIBool needByteSwap);
extern MIGDllExport RTIBool MIGRtps_deserializeUnsignedShort(
unsigned short *twobytes,
const char **data,
RTIBool needByteSwap);
extern MIGDllExport RTIBool MIGRtps_deserializeIpv4Address(
NDDS_Transport_Address_t *addr,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_deserializeIpv6Locator(
struct RTINetioLocator *loc,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_deserializeIpv6LocatorWithEncapsulations(
struct RTINetioLocator *loc,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_deserializeProtocolVersion(
RTICdrUnsignedShort *out,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool
MIGRtps_deserializeRtiBool(RTIBool *out, struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_deserializeDuration(
struct RTINtpTime *time,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool
MIGRtps_deserializeTime(struct RTINtpTime *time, struct RTICdrStream *stream);
extern MIGDllExport void MIGRtps_deserializeTimeFast(
struct RTINtpTime *time,
struct RTICdrStream *stream);
extern MIGDllExport void MIGRtps_deserializeDurationFast(
struct RTINtpTime *duration,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_deserializeSequenceNumber(
struct REDASequenceNumber *seq,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_deserializeVendorId(
RTICdrUnsignedShort *out,
struct RTICdrStream *stream);
extern MIGDllExport unsigned int MIGRtps_getIpv4AddressMaxSizeSerialized(
unsigned int size);
extern MIGDllExport unsigned int MIGRtps_getIpv6LocatorMaxSizeSerialized(
unsigned int size);
extern MIGDllExport unsigned int
MIGRtps_getIpv6LocatorMaxSizeSerializedWithEncapsulations(unsigned int size);
extern MIGDllExport unsigned int MIGRtps_getProtocolVersionMaxSizeSerialized(
unsigned int size);
extern MIGDllExport unsigned int MIGRtps_getRtiBoolMaxSizeSerialized(void);
extern MIGDllExport unsigned int MIGRtps_getRtiNtpTimeMaxSizeSerialized(
unsigned int size);
extern MIGDllExport unsigned int MIGRtps_getSequenceNumberMaxSizeSerialized(
unsigned int size);
extern MIGDllExport unsigned int MIGRtps_getVendorIdMaxSizeSerialized(
unsigned int size);
/*e \ingroup MIGRtpsClass
*
* @bried Serializes the MIG_RTPS_PID_FILTER_SIGNATURE parameter prefix.
*
* The prefix includes:
*
* - Parameter header (4-bytes)
* - MIG_RTPS_PID_FILTER_SIGNATURE (2 bytes)
* - length (2 bytes)
* - Signature bitmap count (4-bytes): we only support one bitmap
* - Signature bitmap (4-bytes)
* - Number of signatures (4-bytes)
*
* The actual signatures have to be serialized separately.
*
* The function assumes that there is space in the stream to do the
* serialization.
*/
extern MIGDllExport void MIGRtps_serializeFilterSignatureParameterPrefixFast(
struct RTICdrStream *stream,
RTI_UINT32 bitmap,
RTI_UINT32 signatureCount);
extern MIGDllExport RTIBool MIGRtps_serializeIpv4Address(
void *endpointData,
const NDDS_Transport_Address_t *addr,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtps_serializeIpv6Locator(
void *endpointData,
const struct RTINetioLocator *loc,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtps_serializeIpv6LocatorWithEncapsulations(
void *endpointData,
const struct RTINetioLocator *loc,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtps_serializeLong(
void *endpointData,
const int *value,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
/*e \ingroup MIGRtpsClass
*
* @bried Serializes the MIG_RTPS_PID_SENTINEL parameter.
*
* The function assumes that there is space in the stream to do the
* serialization.
*/
extern MIGDllExport void MIGRtps_serializeParameterSequenceSentinelFast(
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtps_serializeProtocolVersion(
void *endpointData,
const RTICdrUnsignedShort *in,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtps_serializeRtiBool(
void *endpointData,
const RTIBool *in,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport void MIGRtps_serializeTimeFast(
struct RTICdrStream *stream,
const struct RTINtpTime *time);
extern MIGDllExport RTIBool MIGRtps_serializeDuration(
void *endpointData,
const struct RTINtpTime *time,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtps_serializeSequenceNumber(
void *endopintData,
const struct REDASequenceNumber *seq,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtps_serializeVendorId(
void *endpointData,
const RTICdrUnsignedShort *in,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeData,
void *endpointPluginQos);
extern MIGDllExport RTIBool
MIGRtps_skipIpv6Locator(struct RTICdrStream *stream);
/*e \ingroup MIGRtpsClass
*
* @brief Adds a virtual writer app ack to the list in
* this app ack state
*
* @pre self uses a deserialized (list) representation
*/
extern MIGDllExport void MIGRtpsAppAck_assertVirtualWriter(
struct MIGRtpsAppAck *self,
struct MIGRtpsAppAckPerVirtualWriter *vWrAppAck);
/*e \ingroup MIGRtpsClass
*
* Gets the first virtual writer app-ack status from an AppAck message
*
*/
extern MIGDllExport struct MIGRtpsAppAckPerVirtualWriter *
MIGRtpsAppAck_getFirstVirtualWriter(struct MIGRtpsAppAck *self);
/*e \ingroup MIGRtpsClass
*
* Allows iterating through virtual writers
*
*/
extern MIGDllExport struct MIGRtpsAppAckPerVirtualWriter *
MIGRtpsAppAck_getNextVirtualWriter(struct MIGRtpsAppAck *self);
/*e \ingroup MIGRtpsClass
*
* Initializes an AppAck structure from a data stream representing
* the beginning of a serialized APP_ACK_CONF message.
*/
extern MIGDllExport void MIGRtpsAppAck_setConfFromBuffer(
struct MIGRtpsAppAck *appAckConfOut,
const char **dataStream,
int dataLength,
MIGRtpsSubmessageFlag flags);
/*e \ingroup MIGRtpsClass
* @brief Initialize with buffer
*
* Initializes an AppAck structure from a data stream representing
* the beginning of a serialized APP_ACK message.
*/
extern MIGDllExport void MIGRtpsAppAck_setFromBuffer(
struct MIGRtpsAppAck *appAckOut,
const char **dataStream,
int dataLength,
MIGRtpsSubmessageFlag flags);
/*e \ingroup MIGRtpsClass
* @brief Initialize with inlineList
*
* Initializes an AppAck structure from an inline list
* containing MIGRtpsAppAckPerVirtualWriter structures, each
* having a REDASequenceNumberIntervalList
*/
extern MIGDllExport void MIGRtpsAppAck_setFromList(
struct MIGRtpsAppAck *appAckConfOut,
struct REDAInlineList *virtualWriterList);
/*e \ingroup MIGRtpsClass
*
* Ensures that this app-ack per virtual writer
* is included in the list of its parent (MIGRtpsAppAck)
*
* @pre MIGRtpsAppAck_assertVirtualWriter(parent, self)
* has been called at least once.
* @pre Only for deserialized representation
*
* @post MIGRtpsAppAck_get{First,Next}VirtualWriter(parent)
* will return self when called enough times
*
*/
extern MIGDllExport void MIGRtpsAppAckPerVirtualWriter_assertToParent(
struct MIGRtpsAppAckPerVirtualWriter *self);
/*e \ingroup MIGRtpsClass
*
* Gets the first sn interval in the app-ack for a virtual writer
*
*/
extern MIGDllExport struct REDASequenceNumberInterval *
MIGRtpsAppAckPerVirtualWriter_getFirstInterval(
struct MIGRtpsAppAckPerVirtualWriter *self,
struct REDAWorker *worker);
/*e \ingroup MIGRtpsClass
*
* Allows iterating through intervals
*
*/
extern MIGDllExport struct REDASequenceNumberInterval *
MIGRtpsAppAckPerVirtualWriter_getNextInterval(
struct MIGRtpsAppAckPerVirtualWriter *self,
struct REDAWorker *worker);
extern MIGDllExport void MIGRtpsAppAckPerVirtualWriter_initialize(
struct MIGRtpsAppAckPerVirtualWriter *virtualWriterAppAckOut,
const struct MIGRtpsGuid *guid,
struct REDASequenceNumberIntervalList *list,
struct REDASequenceNumberInterval *interval,
RTI_UINT32 initialEpoch);
/*e \ingroup MIGRtpsClass
*
* Ensures that this app-ack per virtual writer
* is not included in the list of its parent.
*
* MIGRtpsAppAckPerVirtualWriter_assertToParent can be
* used later on to include it again.
*
* @pre MIGRtpsAppAck_assertVirtualWriter(parent, self)
* has been called at least once.
* @pre Only for deserialized representation
*
* @post MIGRtpsAppAck_get{First,Next}VirtualWriter(parent)
* will not return self
*
*/
extern MIGDllExport void MIGRtpsAppAckPerVirtualWriter_removeFromParent(
struct MIGRtpsAppAckPerVirtualWriter *self);
/*
* \ingroup MIGRtpsBitmapClass
*
* \brief Check if a sequence number falls in the valid range of the bitmap
*
* @pre valid args
*
* @param id \b In. The sequence number of interest.
*
* @return RTI_FALSE if the sequence number is not in the bitmap
* RTI_TRUE if it is in the bitmap.
*
* @mtsafety unsafe.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_containsBit(
const struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *seqNum);
/*e \ingroup MIGRtpsBitmapClass
\brief Compresses bitmap changing the number of bits to eliminate trailing "1"
bits.
This function only changes the bitCount of the bitmap. It does not
shift or change any bits. The purpose is to eliminate any trailing
"1" bits which provide no information for many types of bitmaps.
Simple implementation of RTPS protocol blindly acts on a bitmap in a
sequential manner without looking ahead at higher sequence bits. For
implementations whose behavior will be logically same for
0111...111 as for 0, other than shorter execution time, by not
processing the unnecessary 1's, this method cuts off the bitmap
ahead of time before acting on it.
As this functionality is provided only for optimization, i.e. an
implementation of RTPS should behave correctly without using this,
for efficiency the algorithm does not eliminate all trailing "1" bits
rather it removes them to the closest 8-bit boundary.
@post Bitmap is adjusted.
@mtsafety unsafe.
*/
extern MIGDllExport void MIGRtpsBitmap_compressTrailingOnes(
struct MIGRtpsBitmap *me);
/*e \ingroup MIGRtpsBitmapClass
\brief Copies source bitmap into destination,
but only specified number of bits.
@pre valid args
@post Bitmap is adjusted.
@param source \b In. Source bitmap.
@param length \b In. Number of bits to copy. If length > bit count of
source bitmap, fill remainder with 0.
@mtsafety unsafe.
*/
extern MIGDllExport void MIGRtpsBitmap_copy(
struct MIGRtpsBitmap *me,
const struct MIGRtpsBitmap *source,
unsigned int length);
/*e
* \ingroup MIGRtpsBitmapClass
* \brief Read bits into the bitmap.
*
* @post sequenceNumber is packed and stream pointer is moved forward.
*
* @param streamPtr \b InOut. Raw bytes containing the bitmap to be read.
* @param availableBufferSize \b In. Amount of bytes left to be
* parsed/deserialized from this RTPS submessage.
* @param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
* RTI_FALSE otherwise.
*
* @return RTI_TRUE on success, RTI_FALSE otherwise.
*
* @mtsafety Unsafe for read during modification. Unsafe for concurrent
* modification unless the args are unchanging.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_deserialize(
struct MIGRtpsBitmap *me,
const char **stream,
RTI_INT32 availableBufferSize,
RTIBool needByteSwap);
/*e \ingroup MIGRtpsBitmapClass
@pre valid arg
@return RTI_TRUE if 2 bitmaps logically identical, RTI_FALSE otherwise
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_equals(
const struct MIGRtpsBitmap *l,
const struct MIGRtpsBitmap *r);
/*e \ingroup MIGRtpsBitmapClass
\brief Fills the bitmap with the specified bit from [firstSeqNum, lastSeqNum].
@pre valid args.
@post Bitmap is adjusted.
@param firstSeqNum \b In. The sequence number from which to start the fill.
@param lastSeqNum \b In. The sequence number at which to end the fill.
@param bit \b In. RTI_TRUE if bits are to be turned on, RTI_FALSE otherwise.
@return RTI_TRUE on success, RTI_FALSE otherwise such as specifying a
last sequence number smaller than the first sequence number. However,
specifying sequence numbers outside the range of the bitmap is valid.
@mtsafety unsafe.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_fill(
struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *firstSeqNum,
const struct REDASequenceNumber *lastSeqNum,
RTIBool bit);
/*e \ingroup MIGRtpsBitmapClass
\brief Get specified bit in bitmap.
@pre valid args
@post the bit out param is filled with logical value of bit of interest.
@param bit \b Out. Pointer to the answer, whose value will be RTI_TRUE
if bit is on and RTI_FALSE otherwise.
@param num \b In. The sequence number of interest.
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
RTI_TRUE on success.
@exception RTI_LOG_PRECONDITION_FAILURE
@mtsafety unsafe if modified concurrently.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_getBit(
const struct MIGRtpsBitmap *me,
RTIBool *bit,
const struct REDASequenceNumber *num);
/*e \ingroup MIGRtpsBitmapClass
may be macroed for performance
@pre valid arg
@return Number of bits the bitmap is describing
@mtsafety unsafe if modified concurrently.
*/
RTI_INT32 MIGRtpsBitmap_getBitCount(const struct MIGRtpsBitmap *me);
/*e
* \ingroup MIGRtpsBitmapClass
* @brief Finds the first occurrence of the specified bit in a bitmap.
* @pre valid args
* @post the position out param is filled with the sequence number.
* @param position \b Out. The position where the searchBit was first found.
* This will be the last sequence number contained in the bitmap + 1 if the
* searchBit is not found.
* @param searchBit \b In. The bit to look for. It is a boolean. RTI_TRUE
* means look for a 1 and RTI_FALSE look for a 0.
* @return RTI_FALSE if the searchBit was not found, RTI_TRUE if found.
* @mtsafety unsafe if modified concurrently.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_getFirstBit(
const struct MIGRtpsBitmap *me,
struct REDASequenceNumber *position,
RTIBool searchBit);
/*e
* \ingroup MIGRtpsBitmapClass
* @brief Finds the last occurrence of the specified bit in a bitmap.
* @pre valid args
* @post the position out param is filled with the sequence number.
* @param position \b Out. The position where the searchBit was first found.
* This will be the bitmap lead if the searchBit is not found.
* @param searchBit \b In. The bit to look for. It is a boolean. RTI_TRUE
* means look for a 1 and RTI_FALSE look for a 0.
* @return RTI_FALSE if the searchBit was not found, RTI_TRUE if found.
* @mtsafety unsafe if modified concurrently.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_getLastBit(
const struct MIGRtpsBitmap *me,
struct REDASequenceNumber *position,
RTIBool searchBit);
/*e \ingroup MIGRtpsBitmapClass
may be macroed for performance
@pre valid arg
@return Pointer to the lead sequence number.
@mtsafety The returned pointer itself is always valid and MT safe, but
the content may be unsafe if modified concurrently.
*/
const struct REDASequenceNumber *MIGRtpsBitmap_getLead(
const struct MIGRtpsBitmap *me);
/*e \ingroup MIGRtpsBitmapClass
may be macroed for performance
@pre valid arg
@return Number of bytes if serialize were to be called
*/
int MIGRtpsBitmap_getSerializedSize(const struct MIGRtpsBitmap *me);
extern MIGDllExport RTI_INT32
MIGRtpsBitmap_getSetBitCount(struct MIGRtpsBitmap *me, RTIBool searchBit);
/*e \ingroup MIGRtpsBitmapClass
\brief Get the number of zero bits.
@pre valid args. sn not larger than the last sn in bitmap.
@param sn \b In. Count zeros before and at this sequence number.
If the sn is less than the first sn in the bitmap, it will return 0.
If the sn is larger than the last sn in the bitmap, it will return -1.
@return Number of bits that are zero. -1 if failed.
@mtsafety unsafe if modified concurrently.
*/
extern MIGDllExport RTI_INT32 MIGRtpsBitmap_getZeroCount(
const struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *sn);
/*e \ingroup MIGRtpsBitmapClass
\brief Inverts all bits of a bitmap.
@post Bitmap is inverted.
@mtsafety unsafe.
*/
extern MIGDllExport void MIGRtpsBitmap_invert(struct MIGRtpsBitmap *me);
/*e \ingroup MIGRtpsBitmapClass
may be macroed for performance
@pre valid arg
@return True if the distance is representable by the bitmap (fits within the
limits imposed by the bitcount), false otherwise.
*/
RTIBool MIGRtpsBitmap_isDistanceValid(
const struct MIGRtpsBitmap *me,
RTI_INT32 distance);
/*e \ingroup MIGRtpsBitmapClass
may be macroed for performance
@pre valid arg
@return True if the bitmap is malformed, false otherwise.
*/
RTIBool MIGRtpsBitmap_isMalformed(const struct MIGRtpsBitmap *me);
/**
* @ingroup MIGRtpsBitmapClass
*
* @brief Copies bits from the source bitmap (`src`) into the destination
* bitmap (`dest`), overwriting the corresponding bits in the destination.
*
* If the source range does not overlap with the destination range, no changes
* are made. If the ranges fully overlap, the destination is entirely replaced
* by the source. For partial overlaps, if the source extends beyond the
* destination, the destination's bit count is increased (if possible) to
* accommodate the source range. If the source starts before the destination,
* only the overlapping portion is copied.
*
* @note The range of a bitmap is determined by its lead sequence number and
* bit count.
* @note This function was specifically designed for merging bitmaps
* representing missing sample fragments when nack response delay is configured
* in a DataWriter.
*
* @param[inout] dest Pointer to the destination MIGRtpsBitmap structure.
* @param[in] src Pointer to the source MIGRtpsBitmap structure.
*
* Examples (assuming dest.bitCount = 10):
* dest[1-10], src[11-15] -- no change to dest.
* dest[1-10], src[1-10] -- dest is fully overwritten by src.
* dest[1-10], src[5-15] -- dest.bitCount is extended to 15; dest[1-4]
* remain, dest[5-15] are set from src[5-15].
* dest[0-256], src[250-260] -- dest[0-249] remain, dest[250-256] are set
* from src[250-256], src[257-260] ignored.
* dest[5-15], src[1-10] -- dest[5-10] are set from src[5-10], dest[11-15]
* remain unchanged.
*/
extern MIGDllExport void MIGRtpsBitmap_combineFragments(
struct MIGRtpsBitmap *dest,
const struct MIGRtpsBitmap *src);
/*e \ingroup MIGRtpsBitmapClass
\brief Merges source bitmap into destination.
@pre valid args
@post Bitmap is adjusted.
@param source \b In. Source bitmap.
@mtsafety unsafe.
*/
extern MIGDllExport void MIGRtpsBitmap_merge(
struct MIGRtpsBitmap *me,
const struct MIGRtpsBitmap *source);
/*e \ingroup MIGRtpsBitmapClass
may be macroed for performance
@pre valid args
@post All bits are reset to zero.
@param seqNum \b In. The new lead sequence number.
@param bitCount \b In. The number of valid bits.
Must be <= MIG_RTPS_BITMAP_SIZE_MAX.
@mtsafety unsafe if modified or read concurrently.
*/
extern MIGDllExport void MIGRtpsBitmap_reset(
struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *seqNum,
RTI_INT32 bitCount);
/*e \ingroup MIGRtpsBitmapClass
\brief Set specified bit in bitmap.
@pre valid args
@post The bit corresponding to the input sequence number is set to either
0 or 1 as specified in input arg.
@param num \b In. The sequence number of interest.
@param bit \b In. RTI_TRUE if bit is to be turned on, RTI_FALSE otherwise.
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
RTI_TRUE on success.
@exception RTI_LOG_PRECONDITION_FAILURE
@mtsafety unsafe.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_setBit(
struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *num,
RTIBool bit);
/*e \ingroup MIGRtpsBitmapClass
\brief Shifts bitmap forward only to specified sequence number,
keeping bit count the same by filling in 0's as necessary.
@post Bitmap is adjusted. If seqNum == bitmap lead, noop. If seqNum >
any bit in bitmap, bitmap is 0 filled.
@param seqNum \b In. New lead sequence number.
@return RTI_TRUE on success, RTI_FALSE otherwise such as specifying a
sequence number smaller than the current lead of the bitmap.
@mtsafety unsafe.
*/
extern MIGDllExport RTIBool MIGRtpsBitmap_shift(
struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *seqNum);
/*e \ingroup MIGRtpsBitmapClass
\brief Truncates the bitmap at the specified sequence number.
@post Bitmap is adjusted.
@param seqNum \b In. Throw away any bits whose sequence is greater than
this. If seqNum < bitmap->_lead, bitmap's bitCount will be set to 0. If
seqNum >= bitmap->_lead + bitmap->_bitCount, bitmap will remain unchanged.
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
RTI_TRUE on success.
@mtsafety unsafe.
*/
extern MIGDllExport void MIGRtpsBitmap_truncate(
struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *seqNum);
/*e \ingroup MIGRtpsBitmapClass
\brief Truncates the bitmap so that the number of zero it contains
starting from startSn to the end (inclusive) equals zeroTotal.
If the startSn is less than bitmap's lead, it is as if the startSn is the same
as bitmaps's lead.
If the startSn is larger than the last sn in bitmap, bitmap will remain
unchanged.
If the original bitmap doesn't have zeroTotal number of zeros between startSn
and last sn, it will remain unchanged. Otherwise, it will be cut off just
after the last zero that reaches the zeroTotal. That said, if the zeroTotal is
zero, the bitmap will end at (startSn - 1), provided startSn is in bitmap
range.
@pre valid param. totalZeros not negative.
@post Bitmap is adjusted.
@param startSn \b In. The sn from which to start counting zeros.
@param totalZeros \b In. The total number of zeros that the truncated bitmap
should have, counting from the startSn.
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
RTI_TRUE on success.
@mtsafety unsafe.
*/
extern MIGDllExport void MIGRtpsBitmap_truncateToZeroCount(
struct MIGRtpsBitmap *me,
const struct REDASequenceNumber *startSn,
int totalZeros);
/*e \ingroup MIGRtpsClass
*
* Compares two tags. For the comparison, a NULL tag is considered equivalent
* to passing an empty string "" tag.
*/
extern MIGDllExport int MIGRtpsDomainTag_compare(
MIGRtpsDomainTag tag1,
MIGRtpsDomainTag tag2);
/*e \ingroup MIGRtpsClass
*
* Checks if the passed tag is the default empty domain tag. A NULL tag is
* considered equivalent to passing an empty string "" tag.
*/
extern MIGDllExport RTIBool MIGRtpsDomainTag_isDefault(MIGRtpsDomainTag self);
extern MIGDllExport RTIBool MIGRtpsEpoch_deserialize(
REDAEpoch *me,
const char **stream,
RTIBool needByteSwap);
/*e
* \ingroup MIGRtpsFragmentBitmapClass
* \brief Read bits into the bitmap.
*
* @post sequenceNumber is packed and stream pointer is moved forward.
*
* @param streamPtr \b InOut. Raw bytes containing the bitmap to be read.
* @param availableBufferSize \b In. Amount of bytes left to be
* parsed/deserialized from this RTPS submessage.
*
* @param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
* RTI_FALSE otherwise.
*
* @return RTI_TRUE on success, RTI_FALSE otherwise.
*
* @mtsafety Unsafe for read during modification. Unsafe for concurrent
* modification unless the args are unchanging.
*/
extern MIGDllExport RTIBool MIGRtpsFragmentBitmap_deserialize(
struct MIGRtpsBitmap *me,
const char **stream,
RTI_INT32 availableBufferSize,
RTIBool needByteSwap);
extern MIGDllExport int MIGRtpsGuid_compare(
const struct MIGRtpsGuid *left,
const struct MIGRtpsGuid *right);
#define MIG_RTPS_GUID_PREFIX_ADJUSTED_SIZE (6)
/*e \ingroup MIGRtpsClass
*
* @brief Return if the entity associated with the GUID is acting as a proxy.
* This function compares the first 6 bytes of the GUID prefix to determine if
* it matches the same bytes of the physical GUID prefix.
*
* Instead of comparing the full prefix with MIGRtpsGuidPrefix_equals,
* we only compare the 48 bits (6 bytes) when deciding if the GUID belongs to a
* proxy or not. This is because this GUID prefix is adjusted to depend on the
* DomainParticipant's Identity Certificate.
*/
extern MIGDllExport RTIBool MIGRtpsGuid_isProxy(
const struct MIGRtpsGuid *me,
const struct MIGRtpsGuid *physical);
/*e \ingroup MIGRtpsClass
*
* @brief Similar to MIGRtpsGuid_isProxy, but it doesn't check if the 'me'
* GUID is MIG_RTPS_GUID_AUTO GUID. Do not call on GUID prefixes that could
* be part of an auto GUID.
*/
extern MIGDllExport RTIBool MIGRtpsGuidPrefix_isProxy(
const struct MIGRtpsGuidPrefix *me,
const struct MIGRtpsGuidPrefix *physical);
/*
* This function is needed because in some cases we need a pointer to the
* function. We cannot do this with MIGRtpsGuid_compare because that one will be
* redefined to MIGRtpsGuid_compareMacro in release libraries.
*/
extern MIGDllExport int MIGRtpsGuid_compareFunction(
const struct MIGRtpsGuid *left,
const struct MIGRtpsGuid *right);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport void MIGRtpsGuid_copy(
struct MIGRtpsGuid *me,
struct MIGRtpsGuid *src);
/*e \ingroup MIGRtpsClass
* Swaps in-place the endianness of a MIGRtpsGuid.
*
* This function is involutory, meaning applying it twice will return the
* original guid (f(f(x)) == x).
*
* @param[in,out] guid The GUID whose endianness to swap.
*/
extern MIGDllExport
void MIGRtpsGuid_swapEndianness(struct MIGRtpsGuid *guid);
/*
* Deserilalize a GUID prefix
*
* @param guidPrefix Out. Populated with GUID prefix
* @param stream Stream to deserialize
*
* @return RTI_TRUE if success, RTI_FALSE if failure
*/
extern MIGDllExport RTIBool MIGRtpsGuidPrefix_deserialize(
struct MIGRtpsGuidPrefix *guidPrefix,
struct RTICdrStream *stream);
/*
* Deserilalize a full GUID (prefix and object ID)
*
* @param guid Out. Populated with GUID
* @param stream Stream to deserialize
*
* @return RTI_TRUE if success, RTI_FALSE if failure
*/
extern MIGDllExport RTIBool
MIGRtpsGuid_deserialize(struct MIGRtpsGuid *guid, struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtpsGuid_deserializeNativeEndianness(
struct MIGRtpsGuid *guid,
struct RTICdrStream *stream);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsGuid_equals(struct MIGRtpsGuid *a, struct MIGRtpsGuid *b);
extern MIGDllExport void MIGRtpsGuid_fromKeyHash(
struct MIGRtpsGuid *guid,
const struct MIGRtpsKeyHash *keyHash);
extern MIGDllExport unsigned int MIGRtpsGuid_getMaxSizeSerialized(
unsigned int size);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport MIGRtpsObjectSuffix
MIGRtpsGuid_getObjectSuffix(struct MIGRtpsGuid *me);
/*e \ingroup MIGRtpsClass
@brief Copies in network-byte order (big endian)
*/
extern MIGDllExport void MIGRtpsGuid_htoncopy(
struct MIGRtpsGuid *me,
const struct MIGRtpsGuid *src);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool MIGRtpsGuid_isAuto(struct MIGRtpsGuid *me);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool MIGRtpsGuid_isUnknown(struct MIGRtpsGuid *me);
/*e \ingroup MIGRtpsClass
@brief Copies in host-byte order (big endian)
*/
extern MIGDllExport void MIGRtpsGuid_ntohcopy(
struct MIGRtpsGuid *me,
const struct MIGRtpsGuid *src);
extern MIGDllExport RTIBool MIGRtpsGuid_serialize(
void *endpointData,
const void *guid,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeSample,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtpsGuid_serializeNativeEndianness(
void *endpointData,
const struct MIGRtpsGuid *guid,
struct RTICdrStream *stream,
RTIBool serializeEncapsulation,
RTIEncapsulationId encapsulationId,
RTIBool serializeSample,
void *endpointPluginQos);
extern MIGDllExport RTIBool MIGRtpsGuid_skip(struct RTICdrStream *stream);
/*e \ingroup MIGRtpsClass
@brief Converts a Guid into a base-32 number
@param guid \st_in the GUID to be converted
@param str \st_out the output string (at least 28 bytes)
*/
extern MIGDllExport void MIGRtpsGuid_toBase32(
const struct MIGRtpsGuid *guid,
char *str);
/*e \ingroup MIGRtpsClass
* @brief Converts a null-terminated base-32 string to a GUID.
*
* This function takes a null-terminated string in the base-32 encoding and
* returns the corresponding GUID. The base-32 encoding uses the characters
* A-V and 0-9 to represent the numbers 0-31. The input string must be
* null-terminated.
*
* @param[out] guid A pointer to the GUID structure to fill in.
* @param[in] str The null-terminated base-32 string to convert.
*/
extern MIGDllExport void MIGRtpsGuid_fromBase32(
struct MIGRtpsGuid *guid,
const char *str);
/*e \ingroup MIGRtpsClass
may be macroed for performance
@pre valid args
@see REDAToStringBufferFunction MIG_RTPS_GUID_STRING_LENGTH
*/
extern MIGDllExport const char *MIGRtpsGuid_toString(
const void *guid,
struct REDABuffer *str);
extern MIGDllExport void MIGRtpsGuid_print(
const struct MIGRtpsGuid *guid,
const char *desc,
unsigned int indent);
extern MIGDllExport int MIGRtpsGuidPrefix_compare(
const struct MIGRtpsGuidPrefix *left,
const struct MIGRtpsGuidPrefix *right);
/*e \ingroup MIGRtpsClass
* Copy the guid prefix.
*/
extern MIGDllExport void MIGRtpsGuidPrefix_copy(
struct MIGRtpsGuidPrefix *me,
const struct MIGRtpsGuidPrefix *src);
extern MIGDllExport RTIBool MIGRtpsGuidPrefix_equals(
const struct MIGRtpsGuidPrefix *a,
const struct MIGRtpsGuidPrefix *b);
/*e \ingroup MIGRtpsClass
* may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsGuidPrefix_isUnknown(struct MIGRtpsGuidPrefix *me);
extern MIGDllExport RTIBool MIGRtpsHost_deserialize(
const MIGRtpsHostId *hostId,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtpsHostId_deserialize(
const MIGRtpsHostId *hostId,
struct RTICdrStream *stream);
extern MIGDllExport unsigned int MIGRtpsHostId_getMaxSizeSerialized(
unsigned int size);
extern MIGDllExport void MIGRtpsHostId_print(
const MIGRtpsHostId *hostId,
const char *desc,
unsigned int indent);
extern MIGDllExport RTIBool MIGRtpsHostId_serialize(
const MIGRtpsHostId *hostId,
struct RTICdrStream *stream);
extern MIGDllExport int MIGRtpsKeyHash_compare(
const struct MIGRtpsKeyHash *left,
const struct MIGRtpsKeyHash *right);
extern MIGDllExport void MIGRtpsKeyHash_copy(
struct MIGRtpsKeyHash *dest,
const struct MIGRtpsKeyHash *src);
extern MIGDllExport RTIBool MIGRtpsKeyHash_deserialize(
struct MIGRtpsKeyHash *keyHash,
struct RTICdrStream *stream);
extern MIGDllExport int MIGRtpsKeyHash_equals(
const struct MIGRtpsKeyHash *left,
const struct MIGRtpsKeyHash *rigth);
extern MIGDllExport void MIGRtpsKeyHash_fromGuid(
struct MIGRtpsKeyHash *keyHash,
const struct MIGRtpsGuid *guid);
/*e \ingroup MIGRtpsClass
@brief Copies in network-byte order (big endian)
*/
extern MIGDllExport void MIGRtpsKeyHash_htoncopy(
struct MIGRtpsKeyHash *me,
const struct MIGRtpsKeyHash *src);
/*e \ingroup MIGRtpsClass
@brief Copies in host-byte order (big endian)
*/
extern MIGDllExport void MIGRtpsKeyHash_ntohcopy(
struct MIGRtpsKeyHash *me,
const struct MIGRtpsKeyHash *src);
extern MIGDllExport void MIGRtpsKeyHash_print(
const struct MIGRtpsKeyHash *keyHash,
const char *desc);
extern MIGDllExport void MIGRtpsKeyHash_set(
struct MIGRtpsKeyHash *keyHash,
char *value);
extern MIGDllExport void MIGRtpsKeyHash_setDefault(
struct MIGRtpsKeyHash *keyHash);
extern MIGDllExport RTIBool MIGRtpsKeyHash_serialize(
void *endpointData,
struct MIGRtpsKeyHash *keyHash,
struct RTICdrStream *stream,
void *endpointPluginQos);
extern MIGDllExport const char *MIGRtpsKeyHash_toString(
const struct MIGRtpsKeyHash *keyHash,
struct REDABuffer *buffer);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport MIGRtpsObjectId
MIGRtpsObjectId_generate(MIGRtpsObjectKey oky, MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
*/
extern MIGDllExport MIGRtpsObjectId
MIGRtpsObjectId_makeBuiltinSecure(MIGRtpsObjectId oid);
extern MIGDllExport RTI_UINT32 MIGRtpsObjectId_getMaxSampleLength(
MIGRtpsObjectId objectId,
RTI_UINT32 unprotectedChannelsMaxLength);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport MIGRtpsObjectKey
MIGRtpsObjectId_getObjectKey(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport MIGRtpsObjectSuffix
MIGRtpsObjectId_getObjectSuffix(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool MIGRtpsObjectId_hasUserObject(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_isBootstrappingReader(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_isBootstrappingWriter(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
* @brief Check if a objectId belongs to an external builtin endpoint.
* A external built-in endpoints are built-in endpoints created by the
* application (e.g, Monitoting library)
* @param oid \b In. The objet Id.
* @return True if oid is a objectId belongs to an external builtin endpoint.
* False otherwise.
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_isExternalBuiltin(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_isNeverRtpsProtectedReader(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_isNeverRtpsProtectedWriter(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_supportsDirectedWrites(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_supportsKeyExchange(MIGRtpsObjectId oid);
/**
* @brief Returns true if the objectId is a virtual writer, false otherwise.
*/
extern MIGDllExport RTIBool
MIGRtpsObjectId_isVirtualWriter(MIGRtpsObjectId oid);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool MIGRtpsObjectKey_isStateless(
MIGRtpsObjectKey oid,
RTIBool isMeta,
RTIBool isVendor);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport MIGRtpsRWType
MIGRtpsObjectSuffix_getRWType(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
*/
extern MIGDllExport const char *MIGRtpsRWType_toString(MIGRtpsRWType rwType);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport MIGRtpsRWType
MIGRtpsObjectSuffix_getSampleType(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isWriterGroup(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isReaderGroup(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isGroupReaderWriter(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isKeyed(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool MIGRtpsObjectSuffix_isMeta(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
DO NOT USE! This macro is deprecated and should not be used anymore.
Use MIGRtpsObjectSuffix_isUser or MIGRtpsObjectSuffix_isVendorSpecific
below. See CORE-6948 for details.
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isReserved(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool MIGRtpsObjectSuffix_isUser(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isUserCreated(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isUserCreatedKeyed(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
extern MIGDllExport RTIBool
MIGRtpsObjectSuffix_isVendorSpecific(MIGRtpsObjectSuffix osx);
/*e \ingroup MIGRtpsParameterSequenceClass
\brief skip until the end of parameter sequence
@pre valid args
@post stream is moved until the end of parameter sequence.
@param stream \b InOut. Raw bytes containing parameter sequence
to be read.
@param paramSeqLengthOut \b Out. If successful, the number of skipped bytes.
If the operation is not successful then this value is untouched.
@param parameterSequenceStartingPosition \b In. The starting position of the
parameter sequence. The caller should pass in a value derived from the
octetsToInlineQos submessage field. Passing this parameter is more
maintainable than forcing the caller to set *stream.
@param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
RTI_FALSE otherwise.
@return RTI_TRUE on success, RTI_FALSE otherwise.
@mtsafety Unsafe for read during modification. Unsafe for concurrent
modification unless the args are unchanging.
*/
extern MIGDllExport RTIBool MIGRtpsParameterSequence_skip(
const char **stream,
int *paramSeqLengthOut,
const char *parameterSequenceStartingPosition,
RTIBool needByteSwap,
int maxParamLength);
extern MIGDllExport RTIBool
MIGRtpsProductVersion_isInvalid(const struct MIGRtpsProductVersion *me);
/*e \ingroup MIGRtpsClass
@brief Checks if the product version is 0.0.0.0
@param me \b In. The product version to check.
@return RTI_TRUE if the product version is 0.0.0.0, RTI_FALSE otherwise.
*/
extern MIGDllExport RTIBool
MIGRtpsProductVersion_isZero(const struct MIGRtpsProductVersion *me);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
MIGRtpsProtocolVersion MIGRtpsProtocolVersion_getMajor(
MIGRtpsProtocolVersion *me);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
MIGRtpsProtocolVersion MIGRtpsProtocolVersion_getMinor(
MIGRtpsProtocolVersion *me);
/*e \ingroup MIGRtpsSequenceNumberClass
\brief Read bits into the sequence number.
@pre valid args
@post sequenceNumber is packed and stream pointer is moved forward.
@param me \b out. "this". Read into here.
@param streamPtr \b InOut. Raw bytes containing the sequence number
to be read.
@param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
RTI_FALSE otherwise.
@return RTI_TRUE on success, RTI_FALSE otherwise.
@mtsafety Unsafe for read during modification. Unsafe for concurrent
modification unless the args are unchanging.
*/
extern MIGDllExport RTIBool MIGRtpsSequenceNumber_deserialize(
struct REDASequenceNumber *me,
const char **stream,
RTIBool needByteSwap);
extern MIGDllExport RTIBool MIGRtpsStatusInfo_deserialize(
MIGRtpsStatusInfo *statusInfo,
struct RTICdrStream *stream);
extern MIGDllExport RTIBool MIGRtpsStatusInfo_serialize(
void *endpointData,
MIGRtpsStatusInfo *statusInfo,
struct RTICdrStream *stream,
void *endpointPluginQos);
/*e
* \ingroup MIGRtpsSequenceNumberClass
*
* \brief Calculate the distance between 2 sequence numbers.
*
* @pre valid args
*
* @return The distance. -1 on failure.
*
* @mtsafety unsafe if either sequence number modified concurrently.
*/
extern MIGDllExport int MIGRtpsSequenceNumber_getDistance(
const struct REDASequenceNumber *s1,
const struct REDASequenceNumber *s2);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
MIGRtpsVendorId MIGRtpsVendorId_getMajor(MIGRtpsVendorId *me);
/*e \ingroup MIGRtpsClass
may be macroed for performance
*/
MIGRtpsVendorId MIGRtpsVendorId_getMinor(MIGRtpsVendorId *me);
/*e \ingroup MIGRtpsClass
Indicates if the vendor ID is RTI Connext Micro
*/
RTIBool MIGRtpsVendorId_isMicro(MIGRtpsVendorId *me);
/*e \ingroup MIGRtpsClass
Indicates if the vendor ID is RTI Connext DDS (Pro).
*/
RTIBool MIGRtpsVendorId_isPro(MIGRtpsVendorId *me);
/*e \ingroup MIGRtpsClass
Indicates if the vendor ID is RTI (Pro or Micro)
*/
RTIBool MIGRtpsVendorId_isRTI(MIGRtpsVendorId *me);
/*e \ingroup MIGRtpsClass
Indicates if the submessage ID is vendor specific
*/
RTIBool MIGRtpsSubmessageId_isVendorSpecific(const MIGRtpsSubmessageId *id);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Deserialized list: adds writerInfo to back of list, returns TRUE on
success Serialized list: returns RTI_FALSE (not supported)
*/
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_addWriterInfo(
struct MIGRtpsWriterInfoList *writerInfoList,
struct MIGRtpsWriterInfo *writerInfo);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Returns first element
*/
extern MIGDllExport const struct MIGRtpsVirtualWriterInfo *
MIGRtpsWriterInfo_getFirstVirtualWriterInfo(
struct MIGRtpsWriterInfo *writerInfo);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Returns first element
*/
extern MIGDllExport const struct MIGRtpsWriterInfo *
MIGRtpsWriterInfoList_getFirstWriterInfo(
struct MIGRtpsWriterInfoList *writerInfoList);
/*e \ingroup MIGRtpsVirtualWriterListClass
\brief Gets the last available virtual sn for the virtualGUID
provided as input. The result is stored in
lastGroupAvailableVirtualSn.
*/
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_getLastAvailableVirtualSn(
struct MIGRtpsWriterInfoList *writerInfoList,
struct REDASequenceNumber *lastGroupAvailableVirtualSn,
const struct MIGRtpsGuid *virtualGuid);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief
*/
extern MIGDllExport const struct MIGRtpsVirtualWriterInfo *
MIGRtpsWriterInfo_getNextVirtualWriterInfo(
struct MIGRtpsWriterInfo *writerInfo);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief
*/
extern MIGDllExport const struct MIGRtpsWriterInfo *
MIGRtpsWriterInfoList_getNextWriterInfo(
struct MIGRtpsWriterInfoList *writerInfoList);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Calculates the serialized size of the writerVirtualHB
*/
extern MIGDllExport RTI_INT32 MIGRtpsWriterInfoList_getSerializedSizeAndFlags(
struct MIGRtpsWriterInfoList *writerInfoList,
MIGRtpsSubmessageFlag *flags);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Deserialized list: returns number of elements.
Serialized list: returns -1 (not supported)
*/
extern MIGDllExport int MIGRtpsWriterInfo_getVirtualWriterInfoListSize(
struct MIGRtpsWriterInfo *writerInfo);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Deserialized list: returns number of elements
Serialized list: returns -1 (not supported)
*/
extern MIGDllExport int MIGRtpsWriterInfoList_getWriterInfoListSize(
struct MIGRtpsWriterInfoList *writerInfoList);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief
*/
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_initFromBuffer(
struct MIGRtpsWriterInfoList *writerInfoList,
char *dataStream,
unsigned int dataLength,
MIGRtpsSubmessageFlag flags,
const struct MIGRtpsGuid *guid);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief
*/
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_initFromInlineList(
struct MIGRtpsWriterInfoList *writerInfoList,
struct REDAInlineList *inlineList);
/*e \ingroup MIGRtpsVirtualWriterInfoClass
\brief Deserialized list: removes all writerInfo from list, returns TRUE on
success Serialized list: returns RTI_FALSE (not supported)
*/
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_removeAllWriterInfo(
struct MIGRtpsWriterInfoList *writerInfoList);
/* ======= */
/* RENAMES */
/* ======= */
/*e \ingroup MIGRtpsClass */
#define MIGRtpsAppId_deserialize MIGRtpsHostId_deserialize
/*e \ingroup MIGRtpsClass */
#define MIGRtpsAppId_getMaxSizeSerialized MIGRtpsHostId_getMaxSizeSerialized
/*e \ingroup MIGRtpsClass */
#define MIGRtpsAppId_serialize MIGRtpsHostId_serialize
/*e \ingroup MIGRtpsClass */
#define MIGRtpsAppId_print MIGRtpsHostId_print
/*e \ingroup MIGRtpsClass */
#define MIGRtpsInstanceId_deserialize MIGRtpsHostId_deserialize
/*e \ingroup MIGRtpsClass */
#define MIGRtpsInstanceId_getMaxSizeSerialized \
MIGRtpsHostId_getMaxSizeSerialized
/*e \ingroup MIGRtpsClass */
#define MIGRtpsInstanceId_serialize MIGRtpsHostId_serialize
/*e \ingroup MIGRtpsClass */
#define MIGRtpsInstanceId_print MIGRtpsHostId_print
/*e \ingroup MIGRtpsClass */
#define MIGRtpsObjectId_deserialize MIGRtpsHostId_deserialize
/*e \ingroup MIGRtpsClass */
#define MIGRtpsObjectId_getMaxSizeSerialized MIGRtpsHostId_getMaxSizeSerialized
/*e \ingroup MIGRtpsClass */
#define MIGRtpsObjectId_serialize MIGRtpsHostId_serialize
/*e \ingroup MIGRtpsClass */
#define MIGRtpsObjectId_print MIGRtpsHostId_print
/* ============== */
/* END OF RENAMES */
/* ============== */
/* ============================ */
/* END OF FUNCTION DECLARATIONS */
/* ============================ */
#ifdef __cplusplus
} /* extern "C" */
#endif
#include "mig/mig_rtps_impl.h"
#endif /* mig_rtps_h */