/* * (c) Copyright 2024, Real-Time Innovations, 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 disc_rtps_h #define disc_rtps_h #ifndef osapi_type_h #include "osapi/osapi_type.h" #endif #ifndef netio_common_h #include "netio/netio_common.h" #endif #ifndef mig_rtps_h #include "mig/mig_rtps.h" #endif #ifndef disc_dll_h #include "disc/disc_dll.h" #endif #ifdef __cplusplus extern "C" { #endif /* Doxygen file-level documentation =====================================*/ /*e \file * \brief RTPS definition for discovery */ /*e \defgroup DISCRtpsModule rtps * \ingroup DISC * @brief RTPS definition for discovery */ /*e \defgroup DISCRtpsObjectIdModule RTPS object ID * \ingroup DISCRtpsModule * @brief RTPS defined object ID. * @see RTPS protocol PSM, section 3.2.1.3 */ /*e \ingroup DISCRtpsObjectIdModule * participant how the participant refers to itself */ #define DISC_RTPS_OBJECT_ID_PARTICIPANT MIG_RTPS_OBJECT_ID_PARTICIPANT /*e \ingroup DISCRtpsObjectIdModule * Writer of Simple Discovery Protocol Participant messages * Spec calls this builtinSdpParticipantWriter */ #define DISC_RTPS_OBJECT_ID_WRITER_SDP_PARTICIPANT \ MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER /*e * \ingroup DISCRtpsObjectIdModule * Reader of Simple Discovery Protocol Participant messages * Spec calls this builtinSdpParticipantReader */ #define DISC_RTPS_OBJECT_ID_READER_SDP_PARTICIPANT \ MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_READER /*e \ingroup DISCRtpsObjectIdModule * Writer of Secure Reliable Simple Participant Discovery Protocol. */ #define DISC_RTPS_OBJECT_ID_SECURE_RELIABLE_WRITER_SDP_PARTICIPANT \ MIG_RTPS_OBJECT_ID_SECURE_SPDP_BUILTIN_PARTICIPANT_RELIABLE_WRITER /*e \ingroup DISCRtpsObjectIdModule * Reader of Secure Reliable Simple Participant Discovery Protocol. */ #define DISC_RTPS_OBJECT_ID_SECURE_RELIABLE_READER_SDP_PARTICIPANT \ MIG_RTPS_OBJECT_ID_SECURE_SPDP_BUILTIN_PARTICIPANT_RELIABLE_READER /*e \ingroup DISCRtpsObjectIdModule * Writer of Simple Discovery Protocol Participant (proxy) messages * (builtinSdpParticipantProxyWriter) */ #define DISC_RTPS_OBJECT_ID_WRITER_SDP_PARTICIPANT_PROXY (0x000300C2) /*e \ingroup DISCRtpsObjectIdModule * Reader of Simple Discovery Protocol Participant (proxy) messages * (builtinSdpParticipantProxyReader) */ #define DISC_RTPS_OBJECT_ID_READER_SDP_PARTICIPANT_PROXY (0x000300C7) /*e \ingroup DISCRtpsObjectIdModule * Writer of Simple Discovery Protocol Participant state messages * (builtinSdpParticipantStateWriter) */ #define DISC_RTPS_OBJECT_ID_WRITER_SDP_PARTICIPANT_STATE (0x000400C2) /*e \ingroup DISCRtpsObjectIdModule * Reader of Simple Discovery Protocol Participant messages * (builtinSdpParticipantStateReader) */ #define DISC_RTPS_OBJECT_ID_READER_SDP_PARTICIPANT_STATE (0x000400C7) /*e * \ingroup DISCRtpsObjectIdModule * Writer of Simple Discovery Protocol 2.0 Participant Bootstrap messages */ #define DISC_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_BOOTSTRAP_WRITER \ MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER /*e * \ingroup DISCRtpsObjectIdModule * Reader of Simple Discovery Protocol 2.0 Participant Bootstrap messages */ #define DISC_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_BOOTSTRAP_READER \ MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER /*e * \ingroup DISCRtpsObjectIdModule * Writer of Simple Discovery Protocol 2.0 Participant Config messages */ #define DISC_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_CONFIG_WRITER \ MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_WRITER /*e * \ingroup DISCRtpsObjectIdModule * Reader of Simple Discovery Protocol 2.0 Participant Config messages */ #define DISC_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_CONFIG_READER \ MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_READER /*e * \ingroup DISCRtpsObjectIdModule * Writer of Simple Discovery Protocol 2.0 Participant Config secure messages */ #define DISC_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_SECURE_CONFIG_WRITER \ MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_WRITER /*e * \ingroup DISCRtpsObjectIdModule * Reader of Simple Discovery Protocol 2.0 Participant Config secure messages */ #define DISC_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_SECURE_CONFIG_READER \ MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_READER /*e \ingroup DISCRtpsObjectIdModule * Writer of topic messages; spec calls this builtinTopicWriter */ #define DISC_RTPS_OBJECT_ID_WRITER_TOPICS (0x000002C2) /*e \ingroup DISCRtpsObjectIdModule * Reader of topic messages; spec calls this builtinTopicReader */ #define DISC_RTPS_OBJECT_ID_READER_TOPICS (0x000002C7) /*e \ingroup DISCRtpsObjectIdModule * Writer of publication messages; spec calls this builtinPublicationsWriter */ #define DISC_RTPS_OBJECT_ID_WRITER_PUBLICATIONS \ NDDS_TRANSPORT_RTPS_OBJECT_ID_PUB_WRITER /*e \ingroup DISCRtpsObjectIdModule * Reader of publication messages; spec calls this builtinPublicationsReader */ #define DISC_RTPS_OBJECT_ID_READER_PUBLICATIONS \ NDDS_TRANSPORT_RTPS_OBJECT_ID_PUB_READER /*e \ingroup DISCRtpsObjectIdModule * Writer of subscription messages; spec calls this builtinSubscriptionsWriter */ #define DISC_RTPS_OBJECT_ID_WRITER_SUBSCRIPTIONS \ NDDS_TRANSPORT_RTPS_OBJECT_ID_SUB_WRITER /*e \ingroup DISCRtpsObjectIdModule * Reader of subscription messages */ #define DISC_RTPS_OBJECT_ID_READER_SUBSCRIPTIONS \ NDDS_TRANSPORT_RTPS_OBJECT_ID_SUB_READER /*e \ingroup DISCRtpsObjectIdModule * Secure Writer of publication messages * spec calls this builtinPublicationsSecureWriter */ #define DISC_RTPS_OBJECT_ID_SECURE_WRITER_PUBLICATIONS \ MIG_RTPS_OBJECT_ID_SECURE_PUB_WRITER /*e \ingroup DISCRtpsObjectIdModule * Secure Reader of publication messages; spec calls this * builtinPublicationsSecureReader */ #define DISC_RTPS_OBJECT_ID_SECURE_READER_PUBLICATIONS (0xFF0003C7) /*e \ingroup DISCRtpsObjectIdModule * Secure Writer of subscription messages; spec calls this * builtinSubscriptionsSecureWriter */ #define DISC_RTPS_OBJECT_ID_SECURE_WRITER_SUBSCRIPTIONS \ MIG_RTPS_OBJECT_ID_SECURE_SUB_WRITER /*e \ingroup DISCRtpsObjectIdModule * Secure Reader of subscription messages; spec calls this * builtinSubscriptionsSecureReader */ #define DISC_RTPS_OBJECT_ID_SECURE_READER_SUBSCRIPTIONS (0xFF0004C7) /* ----------------------------------------------------------------- */ /*e \defgroup DISCRtpsPidModule DISCRtpsPid * \ingroup DISCRtpsModule * @brief RTPS defined parameter ID. */ /*e \ingroup DISCRtpsPidModule * RTPS parameter ID, used to describe RTPS objects. */ typedef RTI_UINT16 DISCRtpsParameterId; /* ========================================================================== */ /* RTPS SPECIFICATION PID DEFINITIONS */ /* ========================================================================== */ /*e \ingroup DISCRtpsPidModule * Pad for parameter values in case they don't end on a 4-byte boundary */ #define DISC_RTPS_PID_PAD MIG_RTPS_PID_PAD /*e \ingroup DISCRtpsPidModule * Indicate end of parameter sequence. */ #define DISC_RTPS_PID_SENTINEL MIG_RTPS_PID_SENTINEL /*e \ingroup DISCRtpsPidModule * Allows the specification of large member ID and/or data length values; */ #define DISC_RTPS_PID_EXTENDED MIG_RTPS_PID_EXTENDED /*e \ingroup DISCRtpsPidModule * Used for field Publication::userDataQosPolicy : UserDataQosPolicy, * Subscription::userDataQosPolicy : UserDataQosPolicy * Application::userDataQosPolicy : UserDataQosPolicy */ #define DISC_RTPS_PID_USER_DATA MIG_RTPS_PID_USER_DATA /*e \ingroup DISCRtpsPidModule * Data Representation - reader, writer and topic */ #define DISC_RTPS_PID_DATA_REPRESENTATION MIG_RTPS_PID_DATA_REPRESENTATION /*e \ingroup DISCRtpsPidModule * Used for field Publication::topic : PathName, Subscription::topic : PathName */ #define DISC_RTPS_PID_TOPIC_NAME MIG_RTPS_PID_TOPIC_NAME /*e \ingroup DISCRtpsPidModule * Used for field Publication::typeName : TypeName, * Subscription::typeName : TypeName */ #define DISC_RTPS_PID_TYPE_NAME MIG_RTPS_PID_TYPE_NAME /*e \ingroup DISCRtpsPidModule * Used for field Publication::groupDataQosPolicy : GroupDataQosPolicy, * Subscription::groupDataQosPolicy : GroupDataQosPolicy */ #define DISC_RTPS_PID_GROUP_DATA MIG_RTPS_PID_GROUP_DATA /*e \ingroup DISCRtpsPidModule * Used for field Publication::topicDataQosPolicy : TopicDataQosPolicy, * Subscription::topicDataQosPolicy : TopicDataQosPolicy */ #define DISC_RTPS_PID_TOPIC_DATA MIG_RTPS_PID_TOPIC_DATA /*e \ingroup DISCRtpsPidModule * Used for field Publication::durabilityQosPolicy : DurabilityQosPolicy * Used for field Subscription::durabilityQosPolicy : DurabilityQosPolicy */ #define DISC_RTPS_PID_DURABILITY MIG_RTPS_PID_DURABILITY /*e \ingroup DISCRtpsPidModule * Used for field Publication::durabilityQosPolicy : DurabilityServiceQosPolicy * Used for field Topic::durabilityQosPolicy : DurabilityServiceQosPolicy */ #define DISC_RTPS_PID_DURABILITY_SERVICE MIG_RTPS_PID_DURABILITY_SERVICE /*e \ingroup DISCRtpsPidModule * Used for field Subscription::deadlineQosPolicy : DeadlineQosPolicy */ #define DISC_RTPS_PID_DEADLINE MIG_RTPS_PID_DEADLINE /*e \ingroup DISCRtpsPidModule * Used for field Subscription::latencyBudgetQosPolicy : LatencyBudgetQosPolicy */ #define DISC_RTPS_PID_LATENCY_BUDGET MIG_RTPS_PID_LATENCY_BUDGET /*e \ingroup DISCRtpsPidModule * Used for field Publication::livelinessQosPolicy : LivelinessQosPolicy * Used for field Subscription::livelinessQosPolicy : LivelinessQosPolicy */ #define DISC_RTPS_PID_LIVELINESS MIG_RTPS_PID_LIVELINESS /*e \ingroup DISCRtpsPidModule * Used for field Publication::reliabilityOffered : RTI_UINT32 * Used for field Subscription::reliabilityRequested : RTI_UINT32 */ #define DISC_RTPS_PID_RELIABILITY MIG_RTPS_PID_RELIABILITY /*e \ingroup DISCRtpsPidModule * Used for field Publication::lifespanQosPolicy : LifespanQosPolicy */ #define DISC_RTPS_PID_LIFESPAN MIG_RTPS_PID_LIFESPAN /*e \ingroup DISCRtpsPidModule * Used for field Subscription::destinationOrderQosPolicy : * DestinationOrderQosPolicy */ #define DISC_RTPS_PID_DESTINATION_ORDER MIG_RTPS_PID_DESTINATION_ORDER /*e \ingroup DISCRtpsPidModule * Used for field Topic::history : HistoryQosPolicy */ #define DISC_RTPS_PID_HISTORY MIG_RTPS_PID_HISTORY /*e \ingroup DISCRtpsPidModule * Used for field Topic::resourceLimits : ResourceLimitsQosPolicy */ #define DISC_RTPS_PID_RESOURCE_LIMITS MIG_RTPS_PID_RESOURCE_LIMITS /*e \ingroup DISCRtpsPidModule * Used for field Subscription::ownershipQosPolicy : OwnershipQosPolicy */ #define DISC_RTPS_PID_OWNERSHIP MIG_RTPS_PID_OWNERSHIP /*e \ingroup DISCRtpsPidModule * Used for field Publication::strength : long */ #define DISC_RTPS_PID_OWNERSHIP_STRENGTH MIG_RTPS_PID_OWNERSHIP_STRENGTH /*e \ingroup DISCRtpsPidModule * Used for field Subscription::presentationQosPolicy : PresentationQosPolicy */ #define DISC_RTPS_PID_PRESENTATION MIG_RTPS_PID_PRESENTATION /*e \ingroup DISCRtpsPidModule * Used for field Subscription::partitionQosPolicy : PartitionQosPolicy */ #define DISC_RTPS_PID_PARTITION MIG_RTPS_PID_PARTITION /*e \ingroup DISCRtpsPidModule * Used for field Subscription::minimumSeparation : NtpTime, AKA * Used for field Subscription::time_based_filter : TimeBasedFilterQosPolicy */ #define DISC_RTPS_PID_TIME_BASED_FILTER MIG_RTPS_PID_TIME_BASED_FILTER /*e \ingroup DISCRtpsPidModule * Used for field Application::protocolVersion : ProtocolVersion */ #define DISC_RTPS_PID_PROTOCOL_VERSION MIG_RTPS_PID_PROTOCOL_VERSION /*e \ingroup DISCRtpsPidModule * Used for field Application::vendorId : VendorId */ #define DISC_RTPS_PID_VENDOR_ID MIG_RTPS_PID_VENDOR_ID /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX */ #define DISC_RTPS_PID_UNICAST_LOCATOR6 MIG_RTPS_PID_UNICAST_LOCATOR6 /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX */ #define DISC_RTPS_PID_MULTICAST_LOCATOR6 MIG_RTPS_PID_MULTICAST_LOCATOR6 /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX * Used for field Reader::userdataMulticastIPAddressList : IPAddress[] */ #define DISC_RTPS_PID_MULTICAST_IPADDRESS MIG_RTPS_PID_MULTICAST_IPADDRESS /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX */ #define DISC_RTPS_PID_DEFAULT_UNICAST_LOCATOR6 \ MIG_RTPS_PID_DEFAULT_UNICAST_LOCATOR6 /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX */ #define DISC_RTPS_PID_DEFAULT_MULTICAST_LOCATOR6 \ MIG_RTPS_PID_DEFAULT_MULTICAST_LOCATOR6 /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX */ #define DISC_RTPS_PID_METATRAFFIC_UNICAST_LOCATOR6 \ MIG_RTPS_PID_METATRAFFIC_UNICAST_LOCATOR6 /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX */ #define DISC_RTPS_PID_METATRAFFIC_MULTICAST_LOCATOR6 \ MIG_RTPS_PID_METATRAFFIC_MULTICAST_LOCATOR6 /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_APP_IPADDRESS_COUNT_MAX * Used for field Application::unicastIPAddressList : IPAddress[] */ #define DISC_RTPS_PID_DEFAULT_UNICAST_IPADDRESS \ MIG_RTPS_PID_DEFAULT_UNICAST_IPADDRESS /*e \ingroup DISCRtpsPidModule * Used for field Application::userdataUnicastPort :Port */ #define DISC_RTPS_PID_DEFAULT_UNICAST_PORT MIG_RTPS_PID_DEFAULT_UNICAST_PORT /*e \ingroup DISCRtpsPidModule * Used for field ParticipantProxy::metatrafficUnicastLocatorList.address : * IPv4Address_t */ #define DISC_RTPS_PID_METATRAFFIC_UNICAST_IPADDRESS \ MIG_RTPS_PID_METATRAFFIC_UNICAST_IPADDRESS /*e \ingroup DISCRtpsPidModule * Used for field Application::metatrafficUnicastPort : Port */ #define DISC_RTPS_PID_METATRAFFIC_UNICAST_PORT \ MIG_RTPS_PID_METATRAFFIC_UNICAST_PORT /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS_COUNT_MAX * Used for field Application::metatrafficMulticastIPAddressList: IPAddress[] */ #define DISC_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS \ MIG_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS /*e \ingroup DISCRtpsPidModule */ #define DISC_RTPS_PID_METATRAFFIC_MULTICAST_PORT \ MIG_RTPS_PID_METATRAFFIC_MULTICAST_PORT /*e \ingroup DISCRtpsPidModule * boolean */ #define DISC_RTPS_PID_EXPECTS_INLINE_QOS MIG_RTPS_PID_EXPECTS_INLINE_QOS /*e \ingroup DISCRtpsPidModule * Used for field DomainParticipant::manualLivelinessCount : unsigned long */ #define DISC_RTPS_PID_MANUAL_LIVELINESS_COUNT \ MIG_RTPS_PID_MANUAL_LIVELINESS_COUNT /*e \ingroup DISCRtpsPidModule */ #define DISC_RTPS_PID_PARTICIPANT_BUILTIN_ENDPOINTS \ MIG_RTPS_PID_PARTICIPANT_BUILTIN_ENDPOINTS /*e \ingroup DISCRtpsPidModule * Used for field SDPParticipantData::leaseDuration NtpTime */ #define DISC_RTPS_PID_LEASE_DURATION MIG_RTPS_PID_LEASE_DURATION /*e \ingroup DISCRtpsPidModule * Used for field Subscription::contentFilteredTopicProperties */ #define DISC_RTPS_PID_CONTENT_FILTER_PROPERTY \ MIG_RTPS_PID_CONTENT_FILTER_PROPERTY /*e \ingroup DISCRtpsPidModule * Used for field Participant::propertyList */ #define DISC_RTPS_PID_PROPERTY_LIST MIG_RTPS_PID_PROPERTY_LIST /*e \ingroup DISCRtpsPidModule * Used for field Publication/Subscription::dataTagQosPolicy */ #define DISC_RTPS_PID_DATA_TAGS MIG_RTPS_PID_DATA_TAGS /*e \ingroup DISCRtpsPidModule * Used for participant GUID */ #define DISC_RTPS_PID_PARTICIPANT_GUID MIG_RTPS_PID_PARTICIPANT_GUID /*e \ingroup DISCRtpsPidModule * Used for participant entity ID */ #define DISC_RTPS_PID_PARTICIPANT_ENTITY_ID MIG_RTPS_PID_PARTICIPANT_ENTITY_ID /*e \ingroup DISCRtpsPidModule * Used for GROUP GUID */ #define DISC_RTPS_PID_GROUP_GUID MIG_RTPS_PID_GROUP_GUID /*e \ingroup DISCRtpsPidModule * Used for Group OID */ #define DISC_RTPS_PID_GROUP_ENTITY_ID MIG_RTPS_PID_GROUP_ENTITY_ID /*e \ingroup DISCRtpsPidModule * Used for Endpoint GUID */ #define DISC_RTPS_PID_ENDPOINT_GUID MIG_RTPS_PID_ENDPOINT_GUID /*e \ingroup DISCRtpsPidModule * Used for built in endpoints */ #define DISC_RTPS_PID_BUILTIN_ENDPOINT_MASK MIG_RTPS_PID_BUILTIN_ENDPOINT_MASK /*e \ingroup DISCRtpsPidModule * Maximum serialized size of a writer sample */ #define DISC_RTPS_PID_MAX_SAMPLE_SERIALIZED_SIZE \ MIG_RTPS_PID_MAX_SAMPLE_SERIALIZED_SIZE /*e \ingroup DISCRtpsPidModule * Used for entity name */ #define DISC_RTPS_PID_ENTITY_NAME MIG_RTPS_PID_ENTITY_NAME /*e \ingroup DISCRtpsPidModule * XTypes (see Jira CXTYPES-21) */ #define DISC_RTPS_PID_TYPE_OBJECT MIG_RTPS_PID_TYPE_OBJECT /*e \ingroup DISCRtpsPidModule * XTypes (see Jira CXTYPES-10) */ #define DISC_RTPS_PID_TYPE_CONSISTENCY MIG_RTPS_PID_TYPE_CONSISTENCY /*e \ingroup DISCRtpsPidModule */ #define DISC_RTPS_PID_TYPE_INFORMATION_V2 MIG_RTPS_PID_TYPE_INFORMATION_V2 /*e \ingroup DISCRtpsPidModule * XTypes (see Jira CXTYPES-21) */ #define DISC_RTPS_PID_BASE_TYPE_NAME MIG_RTPS_PID_BASE_TYPE_NAME /*e \ingroup DISCRtpsPidModule * RTPS 2.3 Builtin Endpoint QoS. */ #define DISC_RTPS_PID_BUILTIN_ENDPOINT_QOS MIG_RTPS_PID_BUILTIN_ENDPOINT_QOS /*e \ingroup DISCRtpsPidModule * Security */ #define DISC_RTPS_PID_IDENTITY_TOKEN MIG_RTPS_PID_IDENTITY_TOKEN #define DISC_RTPS_PID_PERMISSIONS_TOKEN MIG_RTPS_PID_PERMISSIONS_TOKEN #define DISC_RTPS_PID_ENDPOINT_SECURITY_PROTECTION_INFO \ MIG_RTPS_PID_ENDPOINT_SECURITY_PROTECTION_INFO #define DISC_RTPS_PID_PARTICIPANT_SECURITY_PROTECTION_INFO \ MIG_RTPS_PID_PARTICIPANT_SECURITY_PROTECTION_INFO #define DISC_RTPS_PID_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGO \ MIG_RTPS_PID_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGO #define DISC_RTPS_PID_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGO \ MIG_RTPS_PID_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGO #define DISC_RTPS_PID_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGO \ MIG_RTPS_PID_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGO #define DISC_RTPS_PID_ENDPOINT_SECURITY_SYMMETRIC_CIPHER_ALGO \ MIG_RTPS_PID_ENDPOINT_SECURITY_SYMMETRIC_CIPHER_ALGO /** * 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 DISC_RTPS_PID_BUILTIN_ENDPOINT_EX_MASK \ MIG_RTPS_PID_AVAILABLE_BUILTIN_ENDPOINTS_EX /* * NOTE: for adding new RTPS spec discovery-related PIDs: * 1) Add a new PID that is not currently in use in MIG rtps.ifc * 2) Add a redefinition here. */ /* end RTPS spec PIDs ======================================================= */ /* ========================================================================== */ /* RTI VENDOR SPECIFIC PID DEFINITIONS */ /* ========================================================================== */ /*e \ingroup DISCRtpsPidModule * Used for field Participant::productVersion */ #define DISC_RTPS_PID_PRODUCT_VERSION MIG_RTPS_PID_PRODUCT_VERSION /*e \ingroup DISCRtpsPidModule * Used for field Participant::pluginPromiscuityKind */ #define DISC_RTPS_PID_PLUGIN_PROMISCUITY_KIND_DEPRECATED \ MIG_RTPS_PID_PLUGIN_PROMISCUITY_KIND_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for field: * - Publication::virtualGuid */ #define DISC_RTPS_PID_ENTITY_VIRTUAL_GUID MIG_RTPS_PID_ENTITY_VIRTUAL_GUID /*e \ingroup DISCRtpsPidModule * Used for field: * - Participant::serviceKind * - Publication::serviceKind * - Subscription::serviceKind */ #define DISC_RTPS_PID_SERVICE MIG_RTPS_PID_SERVICE /*e \ingroup DISCRtpsPidModule * Used for TypeCode information */ #define DISC_RTPS_PID_TYPECODE MIG_RTPS_PID_TYPECODE /*e \ingroup DISCRtpsPidModule * Used for disabling acks */ #define DISC_RTPS_PID_DISABLE_ACKS MIG_RTPS_PID_DISABLE_ACKS /*e \ingroup DISCRtpsPidModule * Used for Locator Filter information */ #define DISC_RTPS_PID_LOCATOR_FILTER_LIST MIG_RTPS_PID_LOCATOR_FILTER_LIST /*e \ingroup DISCRtpsPidModule * Used for Encapsulation information */ #define DISC_RTPS_PID_UNICAST_LOCATOR6_EX MIG_RTPS_PID_UNICAST_LOCATOR6_EX /*e \ingroup DISCRtpsPidModule * Used for Encapsulation information */ #define DISC_RTPS_PID_MULTICAST_LOCATOR6_EX MIG_RTPS_PID_MULTICAST_LOCATOR6_EX /*e \ingroup DISCRtpsPidModule * Used to indicate if virtual HB are expected */ #define DISC_RTPS_PID_EXPECTS_VIRTUAL_HB MIG_RTPS_PID_EXPECTS_VIRTUAL_HB /*e \ingroup DISCRtpsPidModule * Used for Role Name information */ #define DISC_RTPS_PID_ROLE_NAME MIG_RTPS_PID_ROLE_NAME /*e \ingroup DISCRtpsPidModule * Used for ack kind */ #define DISC_RTPS_PID_ACK_KIND MIG_RTPS_PID_ACK_KIND /*e \ingroup DISCRtpsPidModule * Used for presentation */ #define DISC_RTPS_PID_PRESENTATION_EX MIG_RTPS_PID_PRESENTATION_EX /*e \ingroup DISCRtpsPidModule * Used for field: * - Publisher::virtualGuid * * This parameter is used only with GROUP access */ #define DISC_RTPS_PID_GROUP_VIRTUAL_GUID MIG_RTPS_PID_GROUP_VIRTUAL_GUID /*e \ingroup DISCRtpsPidModule * Used for peer host update */ #define DISC_RTPS_PID_PEER_HOST_EPOCH_DEPRECATED \ MIG_RTPS_PID_PEER_HOST_EPOCH_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for domain ID */ #define DISC_RTPS_PID_DOMAIN_ID MIG_RTPS_PID_DOMAIN_ID /*e \ingroup DISCRtpsPidModule * Legacy domain ID keep for interoperating with older RTI versions. */ #define DISC_RTPS_PID_RTI_DOMAIN_ID MIG_RTPS_PID_RTI_DOMAIN_ID /*e \ingroup DISCRtpsPidModule * Used for domain Tag */ #define DISC_RTPS_PID_DOMAIN_TAG MIG_RTPS_PID_DOMAIN_TAG /*e \ingroup DISCRtpsPidModule * Used for propagating transport settings */ #define DISC_RTPS_PID_TRANSPORT_INFO_LIST MIG_RTPS_PID_TRANSPORT_INFO_LIST /*e \ingroup DISCRtpsPidModule * Used for propagating the direct communication setting in * a PERSISTENT or TRANSIENT DR */ #define DISC_RTPS_PID_DIRECT_COMMUNICATION MIG_RTPS_PID_DIRECT_COMMUNICATION /*e \ingroup DISCRtpsPidModule * Used for propagating the topic-query-publication property */ #define DISC_RTPS_PID_TOPIC_QUERY_PUBLICATION \ MIG_RTPS_PID_TOPIC_QUERY_PUBLICATION /*e \ingroup DISCRtpsPidModule * Used for propagating the endpoint property change epoch */ #define DISC_RTPS_PID_ENDPOINT_PROPERTY_CHANGE_EPOCH \ MIG_RTPS_PID_ENDPOINT_PROPERTY_CHANGE_EPOCH /*e \ingroup DISCRtpsPidModule * Used for propagating the participant locator reachability lease expiration */ #define DISC_RTPS_PID_REACHABILITY_LEASE_DURATION \ MIG_RTPS_PID_REACHABILITY_LEASE_DURATION /*e \ingroup DISCRtpsPidModule * Used for propagating the vendor-specific endpoints for a participant */ #define DISC_RTPS_PID_VENDOR_BUILTIN_ENDPOINT_MASK \ MIG_RTPS_PID_VENDOR_BUILTIN_ENDPOINT_MASK /*e \ingroup DISCRtpsPidModule * Used for propagating the vendor-specific endpoint security attributes. */ #define DISC_RTPS_PID_ENDPOINT_SECURITY_ATTRIBUTES \ MIG_RTPS_PID_ENDPOINT_SECURITY_ATTRIBUTES /*e \ingroup DISCRtpsPidModule * Used for propagating the compressed type object. */ #define DISC_RTPS_PID_TYPE_OBJECT_LB MIG_RTPS_PID_TYPE_OBJECT_LB /*e \ingroup DISCRtpsPidModule * Used for propagating the instance state consistency kind configuration. */ #define DISC_RTPS_PID_ISC_KIND MIG_RTPS_PID_ISC_KIND /*e \ingroup DISCRtpsPidModule * Used for propagating the vendor-specific participant security protection * info. */ #define DISC_RTPS_PID_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO \ MIG_RTPS_PID_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO /*e \ingroup DISCRtpsPidModule * Used for propagating the related DW/DR GUID in enhanced RPC discovery. */ #define DISC_RTPS_PID_RELATED_ENTITY_GUID MIG_RTPS_PID_RELATED_ENTITY_GUID /*e \ingroup DISCRtpsPidModule * Used for propagating topic name aliases. */ #define DISC_RTPS_PID_TOPIC_NAME_ALIASES MIG_RTPS_PID_TOPIC_NAME_ALIASES /*e \ingroup DISCRtpsPidModule * Used for propagating type name aliases. */ #define DISC_RTPS_PID_TYPE_NAME_ALIASES MIG_RTPS_PID_TYPE_NAME_ALIASES /*e \ingroup DISCRtpsPidModule * Used for propagating exact reliability kind match requirement. * * We only propagate this in the Publication topic, and not in the * Subscription topic, because: * - The subscriber needs to know if the publisher has * exact_reliability_kind_match enabled, if so and the subscriber * is Best Effort the subscriber will trigger an on_requested_incompatible. * - The publisher does not need to know if the subscriber has * exact_reliability_kind_match enabled (exact_reliability_kind_match is * ignored for DataReaders), becase the publisher just needs to know if the * subscriber is Best Effort or not, then it will look its own * exact_reliability_kind_match and if it's true it will trigger an * on_offered_incompatible. * * These considerations apply to Reliable Publishers only. For Best Effort * Publishers, `exact_reliability_kind_match` has no effect and is not * propagated because a Best Effort Publisher can only match with Best Effort * Subscribers. */ #define DISC_RTPS_PID_EXACT_RELIABILITY_KIND_MATCH \ MIG_RTPS_PID_EXACT_RELIABILITY_KIND_MATCH /*e \ingroup DISCRtpsPidModule * * Used for propagating some information about the features that a type supports * like zero copy or flat data. * * Prior to TypeObjectV2, this information was sent in the TypeObjectV1 object. * * We only send this field if it's not 0 */ #define DISC_RTPS_PID_TYPE_PROPERTIES MIG_RTPS_PID_TYPE_PROPERTIES /* * NOTE: for adding new vendor specific discovery-related PIDs: * 1) Add a new PID that is not currently in use in MIG rtps.ifc * 2) Add a redefinition here. */ /* end vendor specific PIDs ================================================= */ /* ========================================================================== */ /* DEPRECATED PID DEFINITIONS */ /* ========================================================================== */ /*e \ingroup DISCRtpsPidModule * Used for field Publication::persistence : NtpTime */ #define DISC_RTPS_PID_PERSISTENCE_DEPRECATED MIG_RTPS_PID_PERSISTENCE_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for field Publication::typeChecksum : TypeChecksum, * Subscription::typeChecksum : TypeChecksum */ #define DISC_RTPS_PID_TYPE_CHECKSUM_DEPRECATED \ MIG_RTPS_PID_TYPE_CHECKSUM_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for client server. */ #define DISC_RTPS_PID_TYPE2_NAME_DEPRECATED MIG_RTPS_PID_TYPE2_NAME_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for client server. */ #define DISC_RTPS_PID_TYPE2_CHECKSUM_DEPRECATED \ MIG_RTPS_PID_TYPE2_CHECKSUM_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for field Publication::expectsAck : boolean */ #define DISC_RTPS_PID_EXPECTS_ACK_DEPRECATED MIG_RTPS_PID_EXPECTS_ACK_DEPRECATED /*e \ingroup DISCRtpsPidModule * Array of max size DISC_RTPS_PID_MANAGER_KEY_COUNT_MAX * Used for field Application::managerKeyList : unsigned long [] */ #define DISC_RTPS_PID_MANAGER_KEY_DEPRECATED MIG_RTPS_PID_MANAGER_KEY_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for field Publication::sendQueueSize : unsigned long. */ #define DISC_RTPS_PID_SEND_QUEUE_SIZE_DEPRECATED \ MIG_RTPS_PID_SEND_QUEUE_SIZE_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for field Manager::vargAppsSequenceNumberLast : SequenceNumber */ #define DISC_RTPS_PID_VARGAPPS_SEQUENCE_NUMBER_LAST_DEPRECATED \ MIG_RTPS_PID_VARGAPPS_SEQUENCE_NUMBER_LAST_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for field Subscription::recvQueueSize : unsigned long */ #define DISC_RTPS_PID_RECV_QUEUE_SIZE_DEPRECATED \ MIG_RTPS_PID_RECV_QUEUE_SIZE_DEPRECATED /*e \ingroup DISCRtpsPidModule * Used for TypeCode information */ #define DISC_RTPS_PID_TYPECODE_DEPRECATED MIG_RTPS_PID_TYPECODE_DEPRECATED /* end deprecated PIDs ====================================================== */ /* ----------------------------------------------------------------- */ /*e \ingroup DISCRtpsPortModule default value for domain base port */ #define DISC_RTPS_BASE_PORT_DEFAULT (7400) /*e \ingroup DISCRtpsPortModule default value for domain index */ #define DISC_RTPS_DOMAIN_INDEX_DEFAULT (0) /*e \ingroup DISCRtpsPortModule default value for application number */ #define DISC_RTPS_APP_INDEX_DEFAULT (0) /*i * \ingroup DISCRtpsPortModule * @brief Get well known port for multicast traffic. * * @details RTPS defines well known ports based on the system wide * port base number, and application specific port group number. * We offer static helper methods to map them into well known port, using * RTPS defined logic: * * PB + (DG * domainId) + dX * * @param domainId \b In. Domain index of participant. * @param portBase \b In. Domain base port. * @param domainIdGain \b In. Domain index gain. * @param portOffset \b In. Domain base port offset. */ extern DISCDllExport NDDS_Transport_Port_t DISCRtps_getWellKnownMulticastPort( int domainId, NDDS_Transport_Port_t portBase, int domainIdGain, int portOffset); /*i * \ingroup DISCRtpsPortModule * @brief Get well known port for unicast traffic. * * @details RTPS defines well known ports based on the system wide * port base number, and application specific port group number. * We offer static helper methods to map them into well known port, using * RTPS defined logic: * * PB + (DG * domainId) + (PG * participantId) + dX * * @param domainId \b In. Domain index of participant. * @param participantId \b In. Participant index of participant. * @param portBase \b In. Domain base port. * @param domainIdGain \b In. Domain index gain. * @param participantIdGain \b In. Participant index gain. * @param portOffset \b In. Domain base port offset. */ extern DISCDllExport NDDS_Transport_Port_t DISCRtps_getWellKnownUnicastPort( int domainId, int participantId, NDDS_Transport_Port_t portBase, int domainIdGain, int participantIdGain, int portOffset); #ifdef __cplusplus } /* extern "C" */ #endif #include "disc/disc_rtps_impl.h" #endif /* disc_rtps_h */