/* * (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_builtin_h #define disc_builtin_h #ifndef pres_participant_h #include "pres/pres_participant.h" #endif #include "pres/pres_psService.h" #ifndef cdr_encapsulation_h #include "cdr/cdr_encapsulation.h" #endif #ifndef cdr_stream_h #include "cdr/cdr_stream.h" #endif #ifndef cdr_typeObject_h #include "cdr/cdr_typeObject.h" #endif #ifndef rti_makeheader_h #include "log/log_makeheader.h" #endif #ifndef disc_dll_h #include "disc/disc_dll.h" #endif #ifndef osapi_heap_h #include "osapi/osapi_heap.h" #endif #ifndef osapi_compression_h #include "osapi/osapi_compression.h" #endif #ifndef reda_buffer_h #include "reda/reda_buffer.h" #endif #ifndef reda_fastBuffer_h #include "reda/reda_fastBuffer.h" #endif #ifndef pres_typePlugin_h #include "pres/pres_typePlugin.h" #endif #ifndef pres_participant_h #include "pres/pres_common.h" #endif #ifndef pres_participantChannel_h #include "pres/pres_participantChannel.h" #endif #ifndef pres_participant_h #include "pres/pres_participant.h" #endif #ifndef pres_psService_h #include "pres/pres_psService.h" #endif #ifdef __cplusplus extern "C" { #endif /* Protocol defined built-in endpoint bits */ #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_WRITER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_READER #define DISC_BUILTIN_ENDPOINT_PUBLICATION_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_PUBLICATION_WRITER #define DISC_BUILTIN_ENDPOINT_PUBLICATION_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_PUBLICATION_READER #define DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_SUBSCRIPTION_WRITER #define DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_SUBSCRIPTION_READER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_WRITER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_READER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_STATE_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATE_WRITER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_STATE_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATE_READER #define DISC_BUILTIN_ENDPOINT_PUBLICATION_SECURE_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PUBLICATION_WRITER #define DISC_BUILTIN_ENDPOINT_PUBLICATION_SECURE_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PUBLICATION_READER #define DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_SECURE_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_SUBSCRIPTION_WRITER #define DISC_BUILTIN_ENDPOINT_SUBSCRIPTION_SECURE_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_SUBSCRIPTION_READER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_SECURE_ANNOUNCER \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_RELIABLE_PARTICIPANT_WRITER #define DISC_BUILTIN_ENDPOINT_PARTICIPANT_SECURE_DETECTOR \ MIG_RTPS_BUILTIN_ENDPOINT_SECURE_RELIABLE_PARTICIPANT_READER /* * Builtin topic names -- IMPORTANT: if you add a new one, add it to * the DISCBuiltin_isBuiltinTopicName() API */ #define DISC_BUILTIN_TOPIC_PARTICIPANT_SELF PRES_PARTICIPANT_BUILTIN_TOPIC_NAME #define DISC_BUILTIN_TOPIC_PARTICIPANT_PROXY "DISCParticipantProxy" #define DISC_BUILTIN_TOPIC_PARTICIPANT_STATE "DISCParticipantState" #define DISC_BUILTIN_TOPIC_PUBLICATION "DISCPublication" #define DISC_BUILTIN_TOPIC_SUBSCRIPTION "DISCSubscription" #define DISC_BUILTIN_TOPIC_PARTICIPANT_SECURE "DISCParticipantSecure" #define DISC_BUILTIN_TOPIC_PUBLICATION_SECURE "DISCPublicationsSecure" #define DISC_BUILTIN_TOPIC_SUBSCRIPTION_SECURE "DISCSubscriptionSecure" #define DISC_BUILTIN_TOPIC_PARTICIPANT_BOOTSTRAP \ PRES_PARTICIPANT_BUILTIN_BOOTSTRAP_TOPIC_NAME #define DISC_BUILTIN_TOPIC_PARTICIPANT_CONFIG "DISCParticipantConfig" #define DISC_BUILTIN_TOPIC_PARTICIPANT_CONFIG_SECURE \ "DISCParticipantConfigSecure" /* Property names for settable properties */ #define DISC_BUILTIN_PROPERTY_VALUE_SIZE (32) #define DISC_BUILTIN_PROPERTY_LIST_MAX_LENGTH_NAME \ "DiscBuiltinPropertyListMaxLength" #define DISC_BUILTIN_PROPERTY_STRING_MAX_LENGTH_NAME \ "DiscBuiltinPropertyStringMaxLength" #define DISC_BUILTIN_DATA_TAG_LIST_MAX_LENGTH_NAME \ "DiscBuiltinDataTagListMaxLength" #define DISC_BUILTIN_DATA_TAG_STRING_MAX_LENGTH_NAME \ "DiscBuiltinDataTagStringMaxLength" #define DISC_BUILTIN_USER_DATA_MAX_LENGTH_NAME "DiscBuiltinUserDataMaxLength" #define DISC_BUILTIN_TRANSPORT_INFO_LIST_MAX_LENGTH_NAME \ "DiscTransportInfoListMaxLength" #define DISC_BUILTIN_IDENTITY_TOKEN_LENGTH_NAME "DiscIdentityTokenLength" #define DISC_BUILTIN_PERMISSIONS_TOKEN_LENGTH_NAME "DiscPermissionsTokenLength" #define DISC_BUILTIN_TOPIC_DATA_MAX_LENGTH_NAME "DiscBuiltinTopicDataMaxLength" #define DISC_BUILTIN_GROUP_DATA_MAX_LENGTH_NAME \ "DiscBuiltinTopicGroupDataMaxLength" #define DISC_BUILTIN_PARTITION_MAX_LENGTH_NAME "DiscBuiltinPartitionMaxLength" #define DISC_BUILTIN_MAX_PARTITIONS_NAME "DiscBuiltinMaxPartitions" #define DISC_BUILTIN_TYPE_CODE_MAX_LENGTH_NAME "DiscBuiltinTypeCodeMaxLength" #define DISC_BUILTIN_TYPE_OBJECT_MAX_SERIALIZED_LENGTH_NAME "DiscBTOMSL" #define DISC_BUILTIN_SERIALIZED_TYPE_OBJECT_DYNAMIC_ALLOCATION_THRESHOLD_NAME \ "DiscBSTODAT" #define DISC_BUILTIN_TYPE_OBJECT_MAX_DESERIALIZED_LENGTH_NAME "DiscBTOMDL" #define DISC_BUILTIN_DESERIALIZED_TYPE_OBJECT_DYNAMIC_ALLOCATION_THRESHOLD_NAME \ "DiscBDTODAT" #define DISC_BUILTIN_TYPE_OBJECT_LB_SERIALIZATION_THRESHOLD_NAME "DiscBTOLST" #define DISC_BUILTIN_CFT_PROPERTY_MAX_LENGTH_NAME \ "DiscBuiltinCFTPropertyMaxLength" #define DISC_BUILTIN_LOCATOR_FILTER_SEQ_MAX_LENGTH_NAME \ "DiscBuiltinLocatorFilterSeqMaxLength" #define DISC_BUILTIN_LOCATOR_FILTER_EXP_MAX_LENGTH_NAME \ "DiscBuiltinLocatorFilterExpMaxLength" #define DISC_BUILTIN_LB_SERIALIZATION_CLASS_ID_NAME "DiscLBID" #define DISC_BUILTIN_ENABLE_RTPS_DISCOVERY_OPTIMIZATION "DiscBERDO" /* Participant properties */ #define DISC_BUILTIN_PARTICIPANT_PROPERTY_LENGTH (9) #define DISC_BUILTIN_PARTICIPANT_PROPERTY_SIZE \ (strlen(DISC_BUILTIN_PROPERTY_LIST_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_PROPERTY_STRING_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_USER_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TRANSPORT_INFO_LIST_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_IDENTITY_TOKEN_LENGTH_NAME) \ + strlen(DISC_BUILTIN_PERMISSIONS_TOKEN_LENGTH_NAME) \ + strlen(DISC_BUILTIN_ENABLE_RTPS_DISCOVERY_OPTIMIZATION) \ + strlen(DISC_BUILTIN_PARTITION_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_MAX_PARTITIONS_NAME) \ + DISC_BUILTIN_PARTICIPANT_PROPERTY_LENGTH \ * DISC_BUILTIN_PROPERTY_VALUE_SIZE \ + DISC_BUILTIN_PARTICIPANT_PROPERTY_LENGTH) /* Publication properties */ #define DISC_BUILTIN_PUBLICATION_PROPERTY_LENGTH (19) #define DISC_BUILTIN_PUBLICATION_PROPERTY_SIZE \ (strlen(DISC_BUILTIN_USER_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TOPIC_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_GROUP_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_PARTITION_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TYPE_CODE_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TYPE_OBJECT_MAX_SERIALIZED_LENGTH_NAME) \ + strlen( \ DISC_BUILTIN_SERIALIZED_TYPE_OBJECT_DYNAMIC_ALLOCATION_THRESHOLD_NAME) \ + strlen(DISC_BUILTIN_TYPE_OBJECT_MAX_DESERIALIZED_LENGTH_NAME) \ + strlen( \ DISC_BUILTIN_DESERIALIZED_TYPE_OBJECT_DYNAMIC_ALLOCATION_THRESHOLD_NAME) \ + strlen(DISC_BUILTIN_TYPE_OBJECT_LB_SERIALIZATION_THRESHOLD_NAME) \ + strlen(DISC_BUILTIN_PROPERTY_LIST_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_PROPERTY_STRING_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_DATA_TAG_LIST_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_DATA_TAG_STRING_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_MAX_PARTITIONS_NAME) \ + strlen(DISC_BUILTIN_LOCATOR_FILTER_SEQ_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_LOCATOR_FILTER_EXP_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_LB_SERIALIZATION_CLASS_ID_NAME) \ + strlen(DISC_BUILTIN_ENABLE_RTPS_DISCOVERY_OPTIMIZATION) \ + DISC_BUILTIN_PUBLICATION_PROPERTY_LENGTH \ * DISC_BUILTIN_PROPERTY_VALUE_SIZE \ + DISC_BUILTIN_PUBLICATION_PROPERTY_LENGTH) /* Subscription properties */ #define DISC_BUILTIN_SUBSCRIPTION_PROPERTY_LENGTH (18) #define DISC_BUILTIN_SUBSCRIPTION_PROPERTY_SIZE \ (strlen(DISC_BUILTIN_USER_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TOPIC_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_GROUP_DATA_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_PARTITION_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TYPE_CODE_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_TYPE_OBJECT_MAX_SERIALIZED_LENGTH_NAME) \ + strlen( \ DISC_BUILTIN_SERIALIZED_TYPE_OBJECT_DYNAMIC_ALLOCATION_THRESHOLD_NAME) \ + strlen(DISC_BUILTIN_TYPE_OBJECT_MAX_DESERIALIZED_LENGTH_NAME) \ + strlen( \ DISC_BUILTIN_DESERIALIZED_TYPE_OBJECT_DYNAMIC_ALLOCATION_THRESHOLD_NAME) \ + strlen(DISC_BUILTIN_TYPE_OBJECT_LB_SERIALIZATION_THRESHOLD_NAME) \ + strlen(DISC_BUILTIN_PROPERTY_LIST_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_PROPERTY_STRING_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_DATA_TAG_LIST_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_DATA_TAG_STRING_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_CFT_PROPERTY_MAX_LENGTH_NAME) \ + strlen(DISC_BUILTIN_MAX_PARTITIONS_NAME) \ + strlen(DISC_BUILTIN_LB_SERIALIZATION_CLASS_ID_NAME) \ + strlen(DISC_BUILTIN_ENABLE_RTPS_DISCOVERY_OPTIMIZATION) \ + DISC_BUILTIN_SUBSCRIPTION_PROPERTY_LENGTH \ * DISC_BUILTIN_PROPERTY_VALUE_SIZE \ + DISC_BUILTIN_SUBSCRIPTION_PROPERTY_LENGTH) /* * SEC-570: Used in security.1.0 authentication to generate handshake messages */ extern DISCDllExport unsigned int DISCBuiltin_getBinaryPropertySeqSerializedSize( const struct PRESDDSSequence *sample); extern DISCDllExport RTIBool DISCBuiltin_serializeBinaryPropertyDdsSequence( struct RTICdrStream *stream, const struct PRESDDSSequence *sequence); extern DISCDllExport RTIBool DISCBuiltin_createParticipantProperties( struct PRESPropertyQosPolicy *propertyQos, int userDataMaximumLength, int propertyListMaximumLength, int propertyStringMaximumLength, int transportInfoListMaxLength, unsigned int identityTokenLength, unsigned int permissionsTokenLength, int partitionMaximumNameCount, int partitionMaximumCumulativeLength, RTIBool enableRtpsDiscoveryOptimization); extern DISCDllExport void DISCBuiltin_deleteProperties( struct PRESPropertyQosPolicy *propertyQos); extern DISCDllExport RTIBool DISCBuiltin_serializePropertyQosPolicyI( PRESTypePluginEndpointData endpointData, const struct PRESPropertyQosPolicy *qos, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize a partition qos policy * * @param endpointData unused * @param partition Partition to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializePartitionQosPolicy( PRESTypePluginEndpointData endpointData, const struct PRESPartitionQosPolicy *partition, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the user data qos policy. * * @param endpointData unused * @param userData user data qos policy to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeUserDataQosPolicy( PRESTypePluginEndpointData endpointData, const struct PRESUserDataQosPolicy *userData, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the entity name. * * @param endpointData unused * @param entityName entity name to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeEntityNameQosPolicyName( PRESTypePluginEndpointData endpointData, const struct PRESEntityNameQosPolicy *entityName, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the entity name role. * * @param endpointData unused * @param entityName Entity name role to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeEntityNameQosPolicyRole( PRESTypePluginEndpointData endpointData, const struct PRESEntityNameQosPolicy *entityName, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize a dataholder * * @param endpointData unused * @param userType dataholder to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeDataHolder( PRESTypePluginEndpointData endpointData, const void *userType, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the transport info sequence * * @param endpointData unused * @param transportInfoSeq transport info to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeTransportInfoSeq( PRESTypePluginEndpointData endpointData, const struct PRESSequenceTransportInfo *transportInfoSeq, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the product version * * @param endpointData unused * @param productVersion product version to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeProductVersion( PRESTypePluginEndpointData endpointData, const struct PRESProductVersion *productVersion, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the service qos policy. * * @param endpointData unused * @param p service qos policy to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeServiceQosPolicy( PRESTypePluginEndpointData endpointData, const struct PRESServiceQosPolicy *p, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the participant security protection info * * @param endpointData unused * @param securityProtectionInfo security protection info to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeParticipantSecurityProtectionInfo( PRESTypePluginEndpointData endpointData, const struct PRESParticipantSecurityProtectionInfo *securityProtectionInfo, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the signature algorithms. * * @param endpointData unused * @param secAlgos security algorithms to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeSignatureAlgorithms( PRESTypePluginEndpointData endpointData, const struct PRESParticipantSecurityDigitalSignatureAlgorithmInfo *secAlgos, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the key establishment algorithms. * * @param endpointData unused * @param keyAlgos key establishment algorithms to serialize. * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeKeyEstablishmentAlgorithms( PRESTypePluginEndpointData endpointData, const struct PRESParticipantSecurityKeyEstablishmentAlgorithmInfo *keyAlgos, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the participant cipher algorithms * * @param endpointData unused * @param cipherAlgos Cipher algorithms to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeParticipantCipherAlgorithms( PRESTypePluginEndpointData endpointData, const struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo *cipherAlgos, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /* * Serialize the vendor participant protection info * * @param endpointData unused * @param securityVendorProtectionInfo The vendor protection info to serialize * @param stream CDR stream to serialize into * @param serializeEncapsulation unused * @param encapsulationId unused * @param serializeData unused * @param endpointPluginQos unused * * @return RTI_TRUE if success, RTI_FALSE if failure */ extern DISCDllExport RTIBool DISCBuiltin_serializeParticipantSecurityVendorProtectionInfo( PRESTypePluginEndpointData endpointData, const struct PRESParticipantSecurityVendorProtectionInfo *securityVendorProtectionInfo, struct RTICdrStream *stream, RTIBool serializeEncapsulation, RTIEncapsulationId encapsulationId, RTIBool serializeData, void *endpointPluginQos); /*e \ingroup DISCPluggableModule \brief Maximum number of installable participant discovery plugins. */ #define DISC_MAX_PDP_PLUGINS 8 /*e \ingroup DISCPluggableModule \brief Maximum number of installable endpoint discovery plugins. */ #define DISC_MAX_EDP_PLUGINS 8 typedef enum { /*e Participant builtin topic. */ DISC_BUILTIN_TOPIC_KIND_PARTICIPANT = 0, /*e Publication builtin topic. */ DISC_BUILTIN_TOPIC_KIND_PUBLICATION, /*e Subscription builtin topic. */ DISC_BUILTIN_TOPIC_KIND_SUBSCRIPTION, /*e Topic builtin topic. */ DISC_BUILTIN_TOPIC_KIND_TOPIC, /* do not remove this; used to size internal array */ _DISC_BUILTIN_TOPIC_KIND } DISCBuiltinTopicKind; /* Defines a hard limit for the maximum number of locators RTI builtin discovery * plugins can handle. This is used both for defining the max size of the * outgoing samples and for establishing the maximum number of locators RTI * Connext DDS will deserialize. */ #define DISC_BUILTIN_LOCATOR_LIST_MAX_SIZE \ (RTI_NETIO_RTPS_LOCATOR_LIST_MAX_SIZE) /* Reduced maximum number of locators. Used for multicast. */ #define DISC_BUILTIN_LOCATOR_REDUCED_LIST_MAX_SIZE \ (RTI_NETIO_RTPS_LOCATOR_REDUCED_LIST_MAX_SIZE) struct DISCBuiltinTopicParticipantData { /*e Guid of the participant */ struct MIGRtpsGuid guid; /*e Hash for the discovery sample */ PRESSampleHash *sampleHash; /*e Remote participant signature for the discovery sample */ struct PRESSampleSignature *sampleSignature; /*e Parameters of the participant. */ struct PRESParticipantParameter *parameter; /*e * This is TRUE if the PRESParticipantParameter is only partially * populated. */ RTIBool partialConfiguration; }; /*e \ingroup DISCPluggableModule \brief Initialize participant builtin topic data. */ #define DISC_BUILTIN_TOPIC_PARTICIPANT_DATA_INITIALIZE \ { \ MIG_RTPS_GUID_UNKNOWN, /* guid */ \ NULL, /* sampleHash */ \ NULL, /* sampleSignature */ \ NULL, /* parameter */ \ RTI_FALSE /* partialConfiguration */ \ } /*e \ingroup DISCPluggableModule \brief The internal dynamic discovery data type for a publication. The structure is defined in psService.ifc */ #define DISCBuiltinTopicPublicationData PRESBuiltinTopicPublicationData #define DISC_BUILTIN_TOPIC_PUBLICATION_DATA_INITIALIZE \ PRES_BUILTIN_TOPIC_PUBLICATION_DATA_INITIALIZE /*e \ingroup DISCPluggableModule \brief The internal dynamic discovery data type for a subscription. The structure is defined in psService.ifc */ #define DISCBuiltinTopicSubscriptionData PRESBuiltinTopicSubscriptionData #define DISC_BUILTIN_TOPIC_SUBSCRIPTION_DATA_INITIALIZE \ PRES_BUILTIN_TOPIC_SUBSCRIPTION_DATA_INITIALIZE /*e \ingroup DISCPluggableModule \brief The internal dynamic discovery data type for a topic. */ struct DISCBuiltinTopicTopicData { /*e GUID. */ struct MIGRtpsGuid guid; }; /*e \ingroup DISCPluggableModule \brief Initialize topic builtin topic data. */ #define DISC_BUILTIN_TOPIC_TOPIC_DATA_INITIALIZE \ { \ MIG_RTPS_GUID_UNKNOWN /* guid */ \ } extern DISCDllExport RTIBool DISCBuiltin_isBuiltinTopicName(const char *topicName); /* Builtin topic subscription type plugin */ extern DISCDllExport void DISCBuiltinTopicSubscriptionDataPluginSupport_print( const struct DISCBuiltinTopicSubscriptionData *topic_data, const char *desc, unsigned int indent); extern DISCDllExport RTIBool DISCBuiltinTopicSubscriptionDataPluginSupport_initializeData_ex( struct DISCBuiltinTopicSubscriptionData *sample, RTIBool allocatePointers); extern DISCDllExport void DISCBuiltinTopicSubscriptionDataPluginSupport_finalizeData_ex( struct DISCBuiltinTopicSubscriptionData *sample, RTIBool deletePointers); extern DISCDllExport int DISCBuiltinTopicSubscriptionDataPluginSupport_compare( const struct DISCBuiltinTopicSubscriptionData *left, const struct DISCBuiltinTopicSubscriptionData *right, RTIBool printErrors); /* Publication parameter plugin */ extern DISCDllExport void DISCBuiltinTopicPublicationDataPluginSupport_print( const struct DISCBuiltinTopicPublicationData *topic_data, const char *desc, unsigned int indent); extern DISCDllExport RTIBool DISCBuiltinTopicPublicationDataPluginSupport_initializeData_ex( struct DISCBuiltinTopicPublicationData *sample, RTIBool allocatePointers); extern DISCDllExport void DISCBuiltinTopicPublicationDataPluginSupport_finalizeData_ex( struct DISCBuiltinTopicPublicationData *sample, RTIBool deletePointers); extern DISCDllExport int DISCBuiltinTopicPublicationDataPluginSupport_compare( const struct DISCBuiltinTopicPublicationData *left, const struct DISCBuiltinTopicPublicationData *right, RTIBool printErrors); extern DISCDllExport RTIBool DISCBuiltinTopicParticipantDataPluginSupport_initializeDataEx( struct DISCBuiltinTopicParticipantData *sample, RTIBool allocatePointers); extern DISCDllExport void DISCBuiltinTopicParticipantDataPluginSupport_finalizeDataEx( struct DISCBuiltinTopicParticipantData *sample, RTIBool deletePointers); extern DISCDllExport struct DISCBuiltinTopicParticipantData * DISCBuiltinTopicParticipantDataPluginSupport_createData(void); extern DISCDllExport void DISCBuiltinTopicParticipantDataPluginSupport_destroyData( struct DISCBuiltinTopicParticipantData *sample); extern DISCDllExport unsigned int DISCBuiltinTopicParticipantDataPlugin_getSerializedSampleSize( PRESTypePluginEndpointData endpointData, RTIBool includeEncapsulation, RTIEncapsulationId encapsulationId, unsigned int size, const struct DISCBuiltinTopicParticipantData *sample); extern DISCDllExport RTIBool DISCBuiltinTopicParticipantDataPlugin_copy( PRESTypePluginEndpointData endpointData, struct DISCBuiltinTopicParticipantData *out, const struct DISCBuiltinTopicParticipantData *in); /* * Get or create the participant data plugin. There is one plugin per process * (NOT PER PARTICIPANT). * * @param needLock. If this is TRUE we will acquire the global lock prior to * checking if the plugin has been created. This should only ever be FALSE * if we have already acquired the global lock (aka, we are calling this * from DomainParticipantFactory_finalize) or we know that the plugin * is not being created or deleted concurrently. * * @return pointer to address of plugin, NULL if error. */ extern DISCDllExport struct PRESTypePlugin ** DISCBuiltinTopicParticipantDataPlugin_assert(RTIBool needLock); /* * Get or create the participant bootstrap data plugin. There is one plugin per * process (NOT PER PARTICIPANT). * * @param needLock. If this is TRUE we will acquire the global lock prior to * checking if the plugin has been created. This should only ever be FALSE * if we have already acquired the global lock (aka, we are calling this * from DomainParticipantFactory_finalize) or we know that the plugin * is not being created or deleted concurrently. * * @return pointer to address of plugin, NULL if error. */ extern DISCDllExport struct PRESTypePlugin ** DISCBuiltinTopicParticipantBootstrapDataPlugin_assert(RTIBool needLock); /** * @brief Exposed publicly to enable monitoring testers in CDS. In SPDP2 mode * this function is useful to gauge the size of the incoming sample to compute * the metrics that are expected from the service. */ extern DISCDllExport unsigned int DISCBuiltinTopicParticipantBootstrapDataPlugin_getSerializedSampleSize( PRESTypePluginEndpointData endpointData, RTIBool includeEncapsulation, RTIEncapsulationId encapsulationId, unsigned int size, const struct DISCBuiltinTopicParticipantData *sample); /* * Delete the built in common participant data plugin. There is only one plugin * per process that is shared among participants, so this should only be called * when all participants are deleted. * * @param plugin Plugin to delete. */ extern DISCDllExport void DISCBuiltinTopicParticipantCommonDataPlugin_delete( struct PRESTypePlugin *plugin); extern DISCDllExport int DISCBuiltinTopicParticipantDataPluginSupport_compare( const struct DISCBuiltinTopicParticipantData *left, const struct DISCBuiltinTopicParticipantData *right); extern DISCDllExport int DISCBuiltinTopicParticipantDataPluginSupport_compare_without_locators( const struct DISCBuiltinTopicParticipantData *left, const struct DISCBuiltinTopicParticipantData *right); /* ----------------------------------------------------------------- */ extern DISCDllExport void DISCBuiltin_printOwnershipQosPolicy( const struct PRESOwnershipQosPolicy *p, const char *desc, unsigned int indent); extern DISCDllExport int DISCBuiltin_comparePartitionQosPolicy( const struct PRESPartitionQosPolicy *left, const struct PRESPartitionQosPolicy *right); /* --- SPDP2 Listener Storage definitions --- */ /* * Index used to store the configComplete flag in * DISCSimpleParticipantDiscoveryPlugin2PDFListener_onBeforeRemoteParticipantRemoved * which says whether a remote participant has already received the * configuration information before being removed */ #define DISC_SPDP2_CONFIG_COMPLETE_LISTENER_STORAGE_INDEX 0 /* * Testing only. Index used to store the pointer to the DDS_DomainParticipant. */ #define DISC_SPDP2_TEST_PARTICIPANT_LISTENER_STORAGE_INDEX 4 /* * Testing only. Index used to store the result. */ #define DISC_SPDP2_TEST_RESULT_LISTENER_STORAGE_INDEX 5 /* * Testing only. Index used to store the pointer to the * onAfterRemoteParticipantAuthenticated callback. */ #define DISC_SPDP2_TEST_CALLBACK_LISTENER_STORAGE_INDEX 6 /* * Testing only. Index used to store whether to shut down the liveliness * channel after authentication. */ #define DISC_SPDP2_TEST_SHUTDOWN_LIVELINESS_BOOL_LISTENER_STORAGE_INDEX 7 #ifdef __cplusplus } /* extern "C" */ #endif #endif /* disc_builtin_h */