Files
qt6-migration-pipeline/external/rti_connext_dds-7.7.0/include/ndds/pres/pres_participant.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

3795 lines
137 KiB
C

/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */
/*
* @(#)pres_participant.h generated by: makeheader Tue Apr 7 17:39:30 2026
*
* built from: participant.ifc
*/
#ifndef pres_participant_h
#define pres_participant_h
#ifndef osapi_type_h
#include "osapi/osapi_type.h"
#endif
#ifndef osapi_ntptime_h
#include "osapi/osapi_ntptime.h"
#endif
#ifndef reda_sequenceNumber_h
#include "reda/reda_sequenceNumber.h"
#endif
#ifndef reda_fastBuffer_h
#include "reda/reda_fastBuffer.h"
#endif
#include "reda/reda_vector.h"
#ifndef property_propertyNames_h
#include "property/property_propertyNames.h"
#endif
#ifndef netio_common_h
#include "netio/netio_common.h"
#endif
#ifndef mig_rtps_h
#include "mig/mig_rtps.h"
#endif
#ifndef commend_activeFacade_h
#include "commend/commend_activeFacade.h"
#endif
#ifndef pres_dll_h
#include "pres/pres_dll.h"
#endif
#ifndef pres_common_h
#include "pres/pres_common.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Participant table names */
#define PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT "remoteParticipant"
/*
* A table containing remote participants that already have a record in the
* PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT. The already-existing record
* is for a remote participant that is unauthenticated, and we assert a record
* in the REMOTE_PARTICIPANT_PENDING_AUTHENTICATION table when we rediscover
* that same participant and we want to give it a chance to actually complete
* authentication. If/when it completes authentication, we will replace the
* REMOTE_PARTICIPANT record with the REMOTE_PARTICIPANT_PENDING_AUTHENTICATION
* record and remove the REMOTE_PARTICIPANT_PENDING_AUTHENTICATION record.
*
* We will only create this table if allowUnauthenticatedParticipants is true.
*/
#define PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT_PENDING_AUTHENTICATION \
"remoteParticipantPendingAuthentication"
#define PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT_SECURITY "remoteParticipantSecurity"
#define PRES_PARTICIPANT_TABLE_NAME_WRR "pres writer matching remote reader"
#define PRES_PARTICIPANT_TABLE_NAME_RRW "pres reader matching remote writer"
/* This property when enabled will allow the creation of a topic multiple times
* assuming that the type name is different
*/
#define PRES_PARTICIPANT_ALLOW_DUPLICATE_TOPIC PROPERTY_NAME_DDS_PARTICIPANT_ALLOW_DUPLICATE_TOPIC
/* This property can be used to enable backward compatibility with 4.5d and
* earlier DATA_FRAG submessage alignment.
*/
#define PRES_PARTICIPANT_USE_45D_COMPATIBLE_ALIGNMENT_ENFORCEMENT_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_USE_45D_COMPATIBLE_ALIGNMENT_ENFORCEMENT
#define PRES_PARTICIPANT_INITIAL_AUTO_OBJECT_KEY_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_INITIAL_AUTO_OBJECT_ID
/*
* Properties to configure trust plugins behavior.
*/
#define PRES_PARTICIPANT_TRUST_PLUGINS_RTPS_PROTECTION_MAX_OVERHEAD_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_RTPS_PROTECTION_MAX_OVERHEAD
#define PRES_PARTICIPANT_TRUST_PLUGINS_METADATA_PROTECTION_MAX_OVERHEAD_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_METADATA_PROTECTION_MAX_OVERHEAD
#define PRES_PARTICIPANT_TRUST_PLUGINS_IS_NON_SECURE_PARTICIPANT_DISCOVERY_MUTABLE_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_IS_NON_SECURE_PARTICIPANT_DISCOVERY_MUTABLE
#define PRES_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_TIMEOUT_SEC_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_TIMEOUT_SEC
#define PRES_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_REQUEST_DELAY_SEC_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_REQUEST_DELAY_SEC
/*
* Currently used only for testing. This property is meant to be propagated into
* the wire. If set, remote participants will pass this version as part of the
* remote participant info.
*/
#define PRES_PARTICIPANT_TRUST_PLUGINS_COMPATIBILITY_MODE_VERSION_ID_PROPERTY_NAME \
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_COMPATIBILITY_MODE_VERSION_ID
/*
* Macro to check if TypeObject V1 serialization is disabled based on the
* type_object_max_serialized_length resource limit.
* Returns RTI_TRUE if the limit is 0 or PRES_LENGTH_AUTO (AUTO means no serialization).
*/
#define PRESParticipant_isTypeObjectV1SerializationDisabled(maxSerializedLength__) \
((maxSerializedLength__) == 0 || (maxSerializedLength__) == PRES_LENGTH_AUTO)
#define PRES_PARTICIPANT_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_LIMIT (MIG_RTPS_PATHNAME_LEN_MAX + 1)
struct PRES_RtpsWellKnownPorts_t {
RTI_INT32 port_base;
RTI_INT32 domain_id_gain;
RTI_INT32 participant_id_gain;
RTI_INT32 builtin_multicast_port_offset;
RTI_INT32 builtin_unicast_port_offset;
RTI_INT32 user_multicast_port_offset;
RTI_INT32 user_unicast_port_offset;
};
struct PRESParticipantDerivableQosPolicy {
/*e
* Whether the current value has been derived from the participant
*/
RTIBool isDerivedFromParticipant;
};
struct PRESLocatorDerivableQosPolicy {
/*e formalize the fact that this is derived from a derivable policy */
struct PRESParticipantDerivableQosPolicy parent;
/*e content of the policy itself */
struct PRESLocatorQosPolicy policy;
};
/*e \ingroup PRESParticipantModule
Default locator Qos policy value
*/
#define PRES_LOCATOR_DERIVABLE_QOS_POLICY_DEFAULT { \
{RTI_TRUE}, /* derived? */ \
PRES_LOCATOR_QOS_POLICY_DEFAULT \
}
struct PRESReducedLocatorDerivableQosPolicy {
/*e formalize the fact that this is derived from a derivable policy */
struct PRESParticipantDerivableQosPolicy parent;
/*e content of the locator itself */
struct RTINetioLocator locator;
};
/*e \ingroup PRESParticipantModule
* Default locator Qos policy value
*/
#define PRES_REDUCED_LOCATOR_DERIVABLE_QOS_POLICY_DEFAULT { \
{RTI_TRUE}, /* derived? */ \
RTI_NETIO_LOCATOR_INVALID \
}
struct PRESDynamicLocatorDerivableQosPolicy {
/*e formalize the fact that this is derived from a derivable policy */
struct PRESParticipantDerivableQosPolicy parent;
/*e content of the policy itself */
REDAVector policy;
};
/*e \ingroup PRESParticipantModule
* Default dynamic locator Qos policy value
*/
#define PRESDynamicLocatorDerivableQosPolicy_INITIALIZER \
{ \
{ RTI_TRUE }, /* derived? */ \
REDAVector_INITIALIZER \
}
extern PRESDllExport RTIBool PRESDynamicLocatorDerivableQosPolicy_initialize(
struct PRESDynamicLocatorDerivableQosPolicy *self,
struct REDAPluggableMemoryAllocator *allocator,
RTI_INT32 initialCapacity);
extern PRESDllExport void PRESDynamicLocatorDerivableQosPolicy_finalize(
struct PRESDynamicLocatorDerivableQosPolicy *self);
struct PRESParticipantSecurityTokens {
struct PRESDataHolder identity;
struct PRESDataHolder permissions;
};
#define PRES_PARTICIPANT_SECURITY_TOKENS_DEFAULT { \
PRES_DATA_HOLDER_INITIALIZER, \
PRES_DATA_HOLDER_INITIALIZER \
}
extern PRESDllExport int PRESParticipantSecurityTokens_compare(
const struct PRESParticipantSecurityTokens *left,
const struct PRESParticipantSecurityTokens *right);
typedef RTICdrUnsignedLong PRESParticipantSecurityAttributesBitmask;
typedef RTICdrUnsignedLong PRESPluginParticipantSecurityAttributesBitmask;
/* axk: Authenticated participant eXchanged Key. */
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_AXK_PROTECTED \
(0x00000001U << 0)
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_DISCOVERY_PROTECTED \
(0x00000001U << 1)
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_LIVELINESS_PROTECTED \
(0x00000001U << 2)
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_KEY_REVISION_ENABLED \
(0x00000001U << 3)
/* psk: Pre-Shared Key. */
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_PSK_PROTECTED \
(0x00000001U << 4)
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_VALID (0x00000001U << 31)
/*
* Vendor participant protection info flags. These flags (defining the bits
* within securityVendorProtectionInfo) are understood by both core and the
* security plugins. The definitions here must match those defined in
* the security plugins (security_access_control.h)
*/
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_PROTECTED \
(0x00000001 << 0U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_ENCRYPTED \
(0x00000001 << 1U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_ORIGIN_AUTHENTICATED \
(0x00000001 << 2U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_PROTECTED \
(0x00000001 << 3U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_ENCRYPTED \
(0x00000001 << 4U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_ORIGIN_AUTHENTICATED \
(0x00000001 << 5U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_METRICS_PROTECTED \
(0x00000001 << 6U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_METRICS_ENCRYPTED \
(0x00000001 << 7U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_METRICS_ORIGIN_AUTHENTICATED \
(0x00000001 << 8U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_LOGGING_PROTECTED \
(0x00000001 << 9U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_LOGGING_ENCRYPTED \
(0x00000001 << 10U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_LOGGING_ORIGIN_AUTHENTICATED \
(0x00000001 << 11U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_TYPE_LOOKUP_SERVICE_PROTECTED \
(0x00000001U << 12U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_TYPE_LOOKUP_SERVICE_ENCRYPTED \
(0x00000001U << 13U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_TYPE_LOOKUP_SERVICE_ORIGIN_AUTHENTICATED \
(0x00000001U << 14U)
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_VALID \
(0x00000001 << 31U)
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT 0
#define PRES_PLUGIN_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT 0
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_BITMASK_DEFAULT 0
#define PRESParticipantSecurityAttributesBitmask_isRtpsProtected(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_AXK_PROTECTED) != 0)
#define PRESParticipantSecurityAttributesBitmask_isRtpsProtectedWithPresharedKey(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_PSK_PROTECTED) != 0)
#define PRESParticipantSecurityAttributesBitmask_isDiscoveryProtected(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_DISCOVERY_PROTECTED) != 0)
#define PRESParticipantSecurityAttributesBitmask_isLivelinessProtected(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_LIVELINESS_PROTECTED) != 0)
#define PRESParticipantSecurityAttributesBitmask_isMonitoringMetricsProtected(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_MONITORING_METRICS_PROTECTED) != 0)
#define PRESParticipantSecurityAttributesBitmask_isMonitoringLoggingProtected(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_MONITORING_LOGGING_PROTECTED) != 0)
#define PRESParticipantSecurityAttributesBitmask_isKeyRevisionEnabled(att) \
(((att) \
& PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_KEY_REVISION_ENABLED) \
!= 0)
#define PRESParticipantSecurityAttributesBitmask_isValid(att) \
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_VALID) != 0)
#define PRESParticipantSecurityAttributesBitmask_compare(left, right) \
(!PRESParticipantSecurityAttributesBitmask_isValid(left) \
&& !PRESParticipantSecurityAttributesBitmask_isValid(right) ? 0 : \
REDAOrderedDataType_compareInt(&(left), &(right)))
/*
* This macro is used for discovery, to ensure that the local and remote
* participants are configured with compatible security.
*/
#define PRESParticipantSecurityProtectionInfo_compare(left, right) \
(PRESParticipantSecurityAttributesBitmask_compare( \
(left)->bitmask, \
(right)->bitmask) != 0 \
? PRESParticipantSecurityAttributesBitmask_compare( \
(left)->bitmask, \
(right)->bitmask) \
: PRESParticipantSecurityAttributesBitmask_compare( \
(left)->pluginBitmask, \
(right)->pluginBitmask))
#define PRESParticipantSecurityVendorProtectionInfoBitmask_isValid(att) \
(((att) & PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_VALID) != 0)
#define PRESParticipantSecurityVendorProtectionInfo_isServiceRequestProtected(info__) \
(((info__)->bitmask & \
PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_PROTECTED) != 0)
#define PRESParticipantSecurityVendorProtectionInfo_isInstanceStateConsistencyProtected(info__) \
(((info__)->bitmask & \
PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_PROTECTED) != 0)
#define PRESParticipantSecurityVendorProtectionInfo_needsSerialization(info__) \
(((info__)->nonDerivedBitmask) != 0)
/* Digital signature algorithms */
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT \
(PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_RSASSA_PKCS1V15_2048_SHA256 \
| PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_RSASSA_PSS_MGF1SHA256_2048_SHA256 \
| PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256)
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT \
PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT \
(PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_RSASSA_PSS_MGF1SHA256_2048_SHA256 \
| PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256)
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT \
PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_NOSEC { \
{0, 0}, \
{0, 0} \
}
/*
* The default digital signature algorithms set - this is the supported mask
* when a DP does not propagate their mask. This is defined in DDS Security 1.2
* specification (section 7.3.11.2) and the values were selected to maintain backward
* interoperability with releases pre-7.0.0, where we do not propagate the
* supported and required algorithms.
*/
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_SEC12 { \
{PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT,\
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT}, \
{PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT, \
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT} \
}
struct PRESParticipantSecurityDigitalSignatureAlgorithmInfo {
PRESSecurityCryptoAlgorithmRequirements trustChain;
PRESSecurityCryptoAlgorithmRequirements messageAuth;
};
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_isDefaultNoSec(signatureAlg__) \
(((signatureAlg__).trustChain.supportedMask == 0) \
&& ((signatureAlg__).trustChain.requiredMask == 0) \
&& ((signatureAlg__).messageAuth.supportedMask == 0) \
&& ((signatureAlg__).messageAuth.requiredMask == 0))
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_isDefaultSec12(signatureAlg__) \
(((signatureAlg__).trustChain.supportedMask \
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT) \
&& ((signatureAlg__).trustChain.requiredMask \
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT) \
&& ((signatureAlg__).messageAuth.supportedMask \
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT) \
&& ((signatureAlg__).messageAuth.requiredMask \
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT))
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_areCompatible( \
left__, \
right__, \
isNonRtiVendor__) \
(PRESSecurityCryptoAlgorithmRequirements_isPairCompatible( \
(left__).trustChain, \
(right__).trustChain, \
(isNonRtiVendor__)) \
&& PRESSecurityCryptoAlgorithmRequirements_isPairCompatible( \
(left__).messageAuth, \
(right__).messageAuth, \
(isNonRtiVendor__)))
/* key establishment algorithms */
#define PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
(PRES_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_BIT_DHE_MODP_2048_256 \
| PRES_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_BIT_ECDHE_CEUM_P256)
#define PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT \
PRES_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_BIT_ECDHE_CEUM_P256
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_NOSEC \
{ \
{0, 0} \
}
/*
* The default key establishment algorithms set - this is the supported mask
* when a DP does not propagate their mask. This is defined in DDS Security 1.2
* specification (section 7.3.12.2) and the values were selected to maintain backward
* interoperability with releases pre-7.0.0, where we do not propagate the
* supported and required algorithms.
*/
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_SEC12 \
{ \
{PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT,\
PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT} \
}
struct PRESParticipantSecurityKeyEstablishmentAlgorithmInfo {
PRESSecurityCryptoAlgorithmRequirements sharedSecret;
};
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_isDefaultNoSec(keyEstablishment__) \
((((keyEstablishment__).sharedSecret.supportedMask) == 0) \
&& (((keyEstablishment__).sharedSecret.requiredMask) == 0))
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_isDefaultSec12(keyEstablishment__) \
((((keyEstablishment__).sharedSecret.supportedMask) \
== PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT) \
&& (((keyEstablishment__).sharedSecret.requiredMask) \
== PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT))
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_areCompatible( \
left__, \
right__, \
isNonRtiVendor__) \
PRESSecurityCryptoAlgorithmRequirements_isPairCompatible( \
(left__).sharedSecret, \
(right__).sharedSecret, \
(isNonRtiVendor__))
/* symmetric cipher algorithms */
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
(PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES128_GCM \
| PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM)
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT \
PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT \
PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT \
PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_NOSEC \
{ \
0, \
0, \
0, \
0 \
}
/*
* The default symmetric cipher algorithms set - this is the supported mask
* when a DP does not propagate their mask. This is defined in DDS Security 1.2
* specification (section 7.3.13.2) and the values were selected to maintain backward
* interoperability with releases pre-7.0.0, where we do not propagate the
* supported and required algorithms.
*/
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_SEC12 \
{ \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT, \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT, \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT, \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT \
}
struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo {
PRESSecurityCryptoAlgorithmSet supportedMask;
PRESSecurityCryptoAlgorithmSet builtinEndpointsRequiredMask;
PRESSecurityCryptoAlgorithmSet builtinKeyExchangeEndpointsRequiredMask;
PRESSecurityCryptoAlgorithmSet userEndpointsDefaultRequiredMask;
};
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_isDefaultNoSec(cipherAlg__) \
(((cipherAlg__).supportedMask == 0) \
&& ((cipherAlg__).builtinEndpointsRequiredMask == 0) \
&& ((cipherAlg__).builtinKeyExchangeEndpointsRequiredMask == 0) \
&& ((cipherAlg__).userEndpointsDefaultRequiredMask == 0))
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_isDefaultSec12(cipherAlg__) \
(((cipherAlg__).supportedMask \
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT) \
&& ((cipherAlg__).builtinEndpointsRequiredMask \
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT) \
&& ((cipherAlg__).builtinKeyExchangeEndpointsRequiredMask \
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT) \
&& ((cipherAlg__).userEndpointsDefaultRequiredMask \
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT))
/*
* Note that we don't check that user_endpoints_default_required_mask has
* supported values. This is because we don't want to fail matching with a
* DomainParticipant due to the default values of the mask. We will only fail
* upon matching of the endpoint.
*/
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_areCompatible( \
left__, \
right__, \
isNonRtiVendor__) \
(PRESSecurityCryptoAlgorithmSet_isPairCompatible( \
(left__).supportedMask, \
(left__).builtinEndpointsRequiredMask, \
(right__).supportedMask, \
(right__).builtinEndpointsRequiredMask, \
(isNonRtiVendor__)) \
&& PRESSecurityCryptoAlgorithmSet_isPairCompatible( \
(left__).supportedMask, \
(left__).builtinKeyExchangeEndpointsRequiredMask, \
(right__).supportedMask, \
(right__).builtinKeyExchangeEndpointsRequiredMask, \
(isNonRtiVendor__)))
/* participant security algorithms */
#define PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC \
{ \
PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_NOSEC, \
PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_NOSEC, \
PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_NOSEC \
}
#define PRESParticipantSecurityAlgorithmInfo_INITIALIZER_SEC12 \
{ \
PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_SEC12, \
PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_SEC12, \
PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_SEC12 \
}
struct PRESParticipantSecurityAlgorithmInfo {
struct PRESParticipantSecurityDigitalSignatureAlgorithmInfo digitalSignature;
struct PRESParticipantSecurityKeyEstablishmentAlgorithmInfo keyEstablishment;
struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo symmetricCipher;
};
typedef RTICdrUnsignedLong PRESVendorParticipantSecurityProtectionInfoMask;
struct PRESParticipantSecurityVendorProtectionInfo {
/*
* The bitmask describing the participant vendor protection info. This
* bitmask always contains the actual protection info in use.
* The whole bitmask is serialized if nonDerivedBitmask contains at least
* one set bit.
*/
PRESVendorParticipantSecurityProtectionInfoMask bitmask;
/*
* The protection info contained in "bitmask" can either be set explicitly
* by the user, or derived from other protection kinds (e.g., the protection
* kind of the service request channel is derived from discovery if left
* unset). This bitmask contains the bits that do not match their corresponding
* derived value from other protection kinds (i.e., it is an XOR of the
* actual protection kind and the derived protection kind). We use this
* nonDerivedBitmask to see if it is required to serialize bitmask or not.
* The nonDerivedBitmask is not serialized.
*/
PRESVendorParticipantSecurityProtectionInfoMask nonDerivedBitmask;
};
#define PRESParticipantSecurityVendorProtectionInfo_INITIALIZER \
{ \
PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_BITMASK_DEFAULT, /* bitmask */ \
0 /* nonDerivedBitmask */ \
}
extern PRESDllExport
int PRESParticipantSecurityAlgorithmInfo_compare(
const struct PRESParticipantSecurityAlgorithmInfo *left,
const struct PRESParticipantSecurityAlgorithmInfo *right);
extern PRESDllExport
int PRESParticipantSecurityVendorProtectionInfo_compare(
const struct PRESParticipantSecurityVendorProtectionInfo *left,
const struct PRESParticipantSecurityVendorProtectionInfo *right);
struct PRESParticipantSecurityProtectionInfo {
/*
* The attribute bitmask that is understood by core and propagated in
* discovery.
*/
PRESParticipantSecurityAttributesBitmask bitmask;
/*
* The attribute bitmask that is only understood by the plugins and is
* propagated in discovery.
*/
PRESPluginParticipantSecurityAttributesBitmask pluginBitmask;
};
#define PRESParticipantSecurityProtectionInfo_INITIALIZER \
{ \
PRES_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT, \
PRES_PLUGIN_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT \
}
/* Mappings to avoid security nomenclature in dds_c.1.0 */
#define PRESParticipantTrustProtectionInfo_INITIALIZER \
PRESParticipantSecurityProtectionInfo_INITIALIZER
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT \
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT
/*
* The PRESRequirementKind type (and its values) must match
* the dds-level DDS_RequirementKind type.
*/
typedef enum {
PRES_REQUIREMENT_KIND_INVALID,
PRES_REQUIREMENT_KIND_REQUIRED,
PRES_REQUIREMENT_KIND_AUTO,
PRES_REQUIREMENT_KIND_IGNORED
} PRESRequirementKind;
#define PRES_REQUIREMENT_KIND_OCSP_DEFAULT PRES_REQUIREMENT_KIND_AUTO
struct PRESParticipantSecurityAttributes {
RTIBool allowUnauthenticatedParticipants;
RTIBool isAccessProtected;
RTIBool isNonSecureParticipantDiscoveryMutable;
/*
* Determines if the security plugins support endpoint preunregistering.
* This feature allows the participant to increase the concurrency of the
* submessage decoding: when supported, we don't need to take the match
* table EA (participant EA) to call preprocess and decode submessage APIs.
*
* This is possible because we use preunregister+unregister in
* combination with REDA tables recordRemoval+recordFinalization to
* provide high concurrent (and thread safe) endpoint handle access.
*/
RTIBool isPreUnregisteringEndpointsSupported;
struct PRESParticipantSecurityProtectionInfo protectionInfo;
struct PRESParticipantSecurityAlgorithmInfo algorithmInfo;
struct PRESParticipantSecurityVendorProtectionInfo securityVendorProtectionInfo;
PRESRequirementKind ocspRequirementKind;
/*
* ROS interoperability mode of the participant. Allows for ROS names to be
* evaluated for permissions when creating topics and checking permissions
* for remote endpoints.
*/
PRESSecurityRosInteroperabilityMode rosInteroperabilityMode;
};
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_DEFAULT { \
RTI_FALSE, /* allowUnauthenticatedParticipants */ \
RTI_FALSE, /* isAccessProtected */ \
RTI_FALSE, /* isNonSecureParticipantDiscoveryMutable */ \
RTI_FALSE, /* isPreUnregisteringEndpointsSupported */ \
PRESParticipantSecurityProtectionInfo_INITIALIZER, /* protectionInfo */ \
PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* algorithmInfo */ \
PRESParticipantSecurityVendorProtectionInfo_INITIALIZER, /* securityVendorProtectionInfo */ \
PRES_REQUIREMENT_KIND_OCSP_DEFAULT, /* ocspRequirementKind */ \
PRES_SECURITY_ROS_NO_INTEROPERABILITY /* rosInteroperabilityMode */ \
}
#define PRES_PARTICIPANT_SERVICE_QOS_POLICY_DEFAULT { \
PRES_NO_SERVICE_QOS \
}
struct PRESParticipantParameter {
/***********************
* IMMUTABLE FIELDS
***********************/
/*e immutable */
MIGRtpsProtocolVersion protocolVersion;
/*e immutable */
MIGRtpsVendorId vendorId;
/*e @brief The length of time a participant declaration should be
* considered valid.
*
* This value is immutable.
*
* @default Infinite. Not all users of this structure will supply a lease
* duration value; in that case, the record is valid
* indefinitely.
*/
RTINtpTime leaseDuration;
/*e immutable */
struct PRESProductVersion productVersion;
/*e immutable */
PRESBuiltinEndpointMask builtinEndpointMask;
/*e immutable */
PRESBuiltinEndpointMask builtinEndpointExtMask;
/*e immutable */
PRESBuiltinEndpointQos_t builtinEndpointQosMask;
/*e immutable */
int domainId;
/*e
* immutable
*
* domainTag can point to different things depending on where the parameter
* is being used. It can be:
* - a pointer to a buffer from a pool (when coming from discovery)
* - a pointer to the PRES_PARTICIPANT_TABLE_NAME_STRING (when used in
* certain shallow-copy operations)
* - a pointer to the property list (when interacting with higher-level
* APIs)
*
* Immutability is enforce both at local participant level
* and at discovery level, as we will not assert remote participant updates
* containing a domainTag that is different to the one we expect.
*/
MIGRtpsDomainTag domainTag;
/*e immutable */
struct PRESSequenceTransportInfo transportInfoSeq;
/*e immutable */
RTINtpTime reachabilityLeaseDuration; /* CORE-7077 */
/*e immutable */
PRESBuiltinEndpointMask vendorBuiltinEndpointMask;
/*e immutable */
struct PRESParticipantSecurityTokens securityTokens;
/*e immutable */
struct PRESParticipantSecurityProtectionInfo securityProtectionInfo;
/*e immutable */
struct PRESParticipantSecurityVendorProtectionInfo securityVendorProtectionInfo;
/*e immutable */
struct PRESServiceQosPolicy serviceQosPolicy;
/*e immutable */
struct PRESParticipantSecurityAlgorithmInfo securityAlgorithmInfo;
/***********************
* MUTABLE FIELDS
***********************/
/*e mutable */
struct PRESLocatorQosPolicy metatrafficUnicastLocator;
/*e mutable */
struct PRESReducedLocatorQosPolicy metatrafficMulticastLocator;
/*e mutable */
struct PRESLocatorQosPolicy defaultUnicastLocator;
/*e mutable */
struct PRESReducedLocatorQosPolicy defaultMulticastLocator;
/*e mutable */
struct PRESUserDataQosPolicy userData;
/*e mutable */
struct PRESPropertyQosPolicy propertyList;
/*e mutable */
struct PRESEntityNameQosPolicy participantName;
/*e mutable */
struct PRESPartitionQosPolicy partitionQosPolicy;
};
/*e \ingroup PRESParticipantModule
Default participant parameter value.
The RTPS protocol version is defaulted to the latest (2.1) as implemented.
*/
#define PRES_PARTICIPANT_PARAMETER_DEFAULT { \
MIG_RTPS_PROTOCOL_VERSION, /* protocolVersion */ \
MIG_RTPS_VENDOR_ID_UNKNOWN, /* vendorId */ \
PRES_PARTICIPANT_LEASE_DURATION_DEFAULT, /* leaseDuration */ \
PRESProductVersion_INITIALIZER, /* productVersion */ \
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointMask */ \
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointExtMask */ \
PRES_BUILTIN_ENDPOINT_QOS_NONE, /*builtinEndpointQosMask*/ \
MIG_RTPS_DOMAIN_DEFAULT, /* domainId */ \
MIG_RTPS_DOMAIN_TAG_DEFAULT, /* domainTag */ \
{0, 0, NULL}, /* transportInfoSeq */ \
PRES_PARTICIPANT_REACHABILITY_LEASE_DURATION_DEFAULT, /* reachabilityLeaseDuration */ \
PRES_BUILTIN_ENDPOINT_NONE, /* vendorBuiltinEndpointMask */ \
PRES_PARTICIPANT_SECURITY_TOKENS_DEFAULT, /* securityTokens */ \
PRESParticipantSecurityProtectionInfo_INITIALIZER, /* securityProtectionInfo */ \
PRESParticipantSecurityVendorProtectionInfo_INITIALIZER, /* securityVendorProtectionInfo */ \
PRES_PARTICIPANT_SERVICE_QOS_POLICY_DEFAULT, /* serviceQosPolicy */ \
PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* securityAlgorithmInfo */ \
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficUnicastLocator */ \
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficMulticastLocator */ \
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* defaultUnicastLocator */ \
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* defaultMulticastLocator */ \
{{0, 0, NULL}}, /* userData */ \
PRES_PROPERTY_QOS_POLICY_DEFAULT, /* propertyList */ \
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT, /* participantName */ \
PRES_PARTITION_QOS_POLICY_DEFAULT /* partition */ \
}
/*e \ingroup PRESParticipantModule
Participant parameter value for the local participant.
The RTPS protocol version is defaulted to the latest version (2.1)
*/
#define PRES_PARTICIPANT_PARAMETER_LOCAL_DEFAULT { \
MIG_RTPS_PROTOCOL_VERSION, /* protocolVersion */ \
MIG_RTPS_VENDOR_ID_RTI, /* vendorId */ \
PRES_PARTICIPANT_LEASE_DURATION_DEFAULT, /* leaseDuration */ \
PRESProductVersion_INITIALIZER, /* productVersion */ \
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointMask */\
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointExtMask */ \
PRES_BUILTIN_ENDPOINT_QOS_NONE, /*builtinEndpointQosMask*/ \
0, /* domainId */ \
MIG_RTPS_DOMAIN_TAG_DEFAULT, /* domainTag */ \
{0, 0, NULL}, /* transportInfoSeq */ \
PRES_PARTICIPANT_REACHABILITY_LEASE_DURATION_DEFAULT, /* reachabilityLeaseDuration */ \
PRES_BUILTIN_ENDPOINT_NONE, /* vendorBuiltinEndpointMask */ \
PRES_PARTICIPANT_SECURITY_TOKENS_DEFAULT, /* securityTokens */ \
PRESParticipantSecurityProtectionInfo_INITIALIZER, /* securityProtectionInfo */ \
PRESParticipantSecurityVendorProtectionInfo_INITIALIZER, /* securityVendorProtectionInfo */ \
PRES_PARTICIPANT_SERVICE_QOS_POLICY_DEFAULT, /* serviceQosPolicy */ \
PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* securityAlgorithmInfo */ \
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficUnicastLocator */ \
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficMulticastLocator */ \
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* defaultUnicastLocator */ \
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* defaultMulticastLocator */ \
{{0, 0, NULL}}, /* userData */ \
PRES_PROPERTY_QOS_POLICY_DEFAULT, /* propertyList */ \
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT, /* participantName */ \
PRES_PARTITION_QOS_POLICY_DEFAULT /* partition */ \
}
#define PRES_PARTICIPANT_USER_DATA_MAXIMUM (256)
#define PRES_PARTICIPANT_TOPIC_DATA_MAXIMUM (256)
#define PRES_PARTICIPANT_PROPERTY_LIST_MAXIMUM (32)
#define PRES_PARTICIPANT_PROPERTY_STRING_MAXIMUM (1024)
#define PRES_TRANSPORT_INFO_LIST_MAX_LENGTH (12)
#define PRES_SHMEM_REF_TRANSFER_MODE_MAX_SEGMENTS (500)
#define PRES_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_DEFAULT (0)
#define PRES_CONSTRAINT_VALUE_NONE (0) /* Must be set to zero */
#define PRES_CONSTRAINT_INDEX_dp (0)
#define PRES_CONSTRAINT_INDEX_dr (1)
#define PRES_CONSTRAINT_INDEX_dw (2)
#define PRES_CONSTRAINT_INDEX_di (3)
#define PRES_CONSTRAINT_INDEX_offFeatures (4)
#define PRES_CONSTRAINT_PARAM_COUNT (5)
typedef enum {
PRES_LICENSE_OFF_FEATURE_NONE = 0, /* 0 */
PRES_LICENSE_OFF_FEATURE_SECURITY = (1 << 0), /* 1 */
PRES_LICENSE_OFF_FEATURE_REAL_TIME_WAN = (1 << 1), /* 2 */
PRES_LICENSE_OFF_FEATURE_CLOUD_DISCOVERY = (1 << 2), /* 4 */
} PRESLicenseOffFeatureCode;
#define PRES_LICENSE_INFO_FIELD_MAX_LENGTH (32)
struct PRESLicenseInformation {
RTIBool isTrialExpired;
int constraintParam[PRES_CONSTRAINT_PARAM_COUNT];
char licenseType[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
char expirationDate[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
char trialEndDate[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
char licenseHash[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
};
#define PRES_LICENSE_INFORMATION_INITIALIZER \
{ \
RTI_FALSE, /* isTrialExpired */ \
{ PRES_CONSTRAINT_VALUE_NONE, \
PRES_CONSTRAINT_VALUE_NONE, \
PRES_CONSTRAINT_VALUE_NONE, \
PRES_CONSTRAINT_VALUE_NONE, \
PRES_CONSTRAINT_VALUE_NONE }, /* constraintParam */ \
{ '\0' }, /* licenseType */ \
{ '\0' }, /* expirationDate */ \
{ '\0' }, /* trialEndDate */ \
{ '\0' } /* licenseHash */ \
}
extern PRESDllExport RTIBool PRESLicenseInformation_copy(
struct PRESLicenseInformation *dst,
const struct PRESLicenseInformation *src);
/**
* @ingroup PRESParticipantModule
*
* @brief Determines if the specified service kind is exempt from RTI Connext
* Express Edition license constraints.
*
* Exempt RTI products are not limited by the license constraints of RTI
* Connext Express Edition, such as the maximum number of participants or
* endpoints. However, after the trial license expires, exempt products cannot
* discover non-RTI entities.
*
* To add a new exempt product, update the ServiceQosPolicy enum, include
* the new value in this macro, ensure the product is whitelisted, and add a
* corresponding test in LicenseTester.c (see
* DDSCLicenseTester_testTrialExcludedProduct).
*/
#define PRESLicense_isTrialExcludedRtiProduct(participant__) \
((participant__)->_property.parameter.serviceQosPolicy.kind \
== PRES_ADMIN_CONSOLE_SERVICE_QOS)
typedef enum {
PRES_DIRECTED_WRITE_AUTO_SERIALIZATION,
PRES_DIRECTED_WRITE_NEW_SERIALIZATION,
PRES_DIRECTED_WRITE_OLD_SERIALIZATION
} PRESDirectedWriteSerializationKind;
struct PRESParticipant; /* forward declare to appease the compile */
struct PRESParticipantProperty {
/* for single threaded applications */
RTIBool isPassive;
/*e property that is common to both local and remote participant */
struct PRESParticipantParameter parameter;
/*e
* @brief Whether or not unregistered remote participants that have
* lost their liveliness should be removed from the database.
*
* If a previously-discovered remote participant has been unregistered
* (PRESParticipant_unregisterRemoteParticipant) and has outlived its
* declared liveliness lease duration, it will be removed from the
* database if this flag is set to true. It will be left in place if
* this flag is false.
*
* @default RTI_TRUE
*/
RTIBool purgeNotAliveParticipants;
/*e
* @brief The maximum amount of time before this participant detects
* the loss of liveliness of a remote participant.
*
* This value must be finite, but it will be ignored if
* purgeNotAliveParticipants is false.
*
* @default 100 seconds
*/
struct RTINtpTime maxParticipantLivelinessLossDetectionPeriod;
/*e property for active facade */
struct COMMENDActiveFacadeProperty facadeProperty;
/*e mutable */
struct PRESEntityFactoryQosPolicy entityFactory;
/*e string tables stores all the topic and typeName strings. */
struct REDATableProperty stringTable;
/*e flow controller stores all locally flow controllers. */
struct REDATableProperty flowControllerTable;
/*e type object table. It is unlimited because this resource
is already bounded by other limits (remote endpoints, local topics) */
struct REDATableProperty typeObjectTable;
/*e local type table stores all locally created type. */
struct REDATableProperty localTypeTable;
/*e local topic table stores all locally created topic.
This is the number of entries that is created in the table when it
runs out of space */
struct REDATableProperty localTopicTable;
/*e topic type table stores all locally and remotely discovered topic
and type pair. */
struct REDATableProperty topicTypeTable;
/*e content filtered table stored all content filters. */
struct REDATableProperty contentFilteredTopicTable;
/*e content filter type table stores all content filter types. */
struct REDATableProperty contentFilterTable;
/*e remote participant table stores all asserted remote participants. */
struct REDATableProperty remoteParticipantTable;
/*e remote participant table stores all asserted remote participants. */
struct REDATableProperty remoteParticipantSecurityTable;
/*e table of ignored entities. */
struct REDATableProperty ignoredEntityTable;
/*e table of ignored entities. */
struct REDATableProperty ignoredLocatorTable;
/*e replacement policy for the records in the table of ignored entities. */
PRESIgnoredEntityReplacementPolicy ignoredEntityReplacementPolicy;
/*e Maximum length for participant userData */
int participantUserDataMaximumLength;
/*e Maximum length for topicData */
int topicDataMaximumLength;
/*e Size of user object to be stored in particpiant */
int participantUserObjectSize;
/*e Alignment user object to be stored in particpiant */
int participantUserObjectAlignment;
/*e Size of user object to be stored in flow controller */
int flowControllerUserObjectSize;
/*e Alignment of user object to be stored in flow controller */
int flowControllerUserObjectAlignment;
/*e Size of user object to be stored in topic */
int topicUserObjectSize;
/*e Alignment of user object to be stored in topic */
int topicUserObjectAlignment;
/*e Size of user object to be stored in content filtered topic */
int contentFilteredTopicUserObjectSize;
/*e Alignment of user object to be stored in content filtered topic */
int contentFilteredTopicUserObjectAlignment;
/*e Type code max serialized size*/
int typeCodeMaxSerializedLength;
/*e Type object max serialized size*/
int typeObjectMaxSerializedLength;
/*e Serialized type object dynamic allocation threshold*/
int serializedTypeObjectDynamicAllocationThreshold;
/*e Type object max deserialized size*/
int typeObjectMaxDeserializedLength;
/*e Deserialized type object dynamic allocation threshold*/
int deserializedTypeObjectDynamicAllocationThreshold;
/*e Content filter property max size*/
int contentFilterPropertyMaxLength;
/*e Maximum length for participant property list */
int participantPropertyListMaximumLength;
/*e Maximum size of string area in property buffer */
int participantPropertyStringMaximumLength;
/* Maximum length of Locator Filter Sequence */
int locatorFilterSeqMaxLength;
/* Maximum length of Locator Filter Expression */
int locatorFilterExpressionMaxLength;
/* Maximum length of Transport Info Sequence */
int transportInfoListMaxLength;
RTIBool enableSecurity;
PRESBuiltinEndpointMask enabledBuiltinChannels;
/* Determines if 5.3.0 shmem locator matching should be used. */
RTIBool shmemUse530LocatorMatching;
RTI_UINT32 shmemRefTransferModeMaxSegments;
struct PRESTypeSupportQosPolicy typeSupport;
/*
* Time-based logging authentication time threshold.
* Default: INFINITE
*/
RTINtpTime authenticationTimeThreshold;
/*
* CORE-10122: Property to control serialization of the GUID in directed
* samples
*/
PRESDirectedWriteSerializationKind directedWriteGuidSerializationKind;
/*e partition table setup
Maximum cumulative length of all the partition name strings,
including comma and terminating null.
This value cannot be greater then
PRES_PS_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_LIMIT */
RTI_UINT32 partitionMaximumCumulativeLength;
/*e Determine if the default partition element is treated as a special
value that matches any partition */
RTIBool defaultPartitionMatchAll;
/*e Determine if it is allowed for an entity to not belonging to any
physical partition */
RTIBool allowNoPartition;
/* License information */
struct PRESLicenseInformation licenseInfo;
/* Indicates whether this participant is whitelisted */
RTIBool isExpressWhitelisted;
/*
* If non-NULL and a remote endpoint is discovered with a topic that matches
* this pattern AND the type is not fully resolved, we will request the
* unresolved types at the time of endpoint discovery (rather than at
* the time of matching). If NULL or the topic does not match, we will
* only request unresolved types at the time of endpoint matching (this
* requires a compatible local endpoint to exist)
*/
char *typeLookupServiceRequestTypesFilter;
};
/*e \ingroup PRESParticipantModule
Default participant property value.
*/
/* clang-format off */
#define PRES_PARTICIPANT_PROPERTY_DEFAULT { \
RTI_FALSE, /* isPasive */ \
PRES_PARTICIPANT_PARAMETER_LOCAL_DEFAULT, \
RTI_TRUE, /* purgeNotAliveParticipants */ \
{100/*sec*/,0/*frac*/}, /*maxParticipantLivelinessLossDetectionPeriod*/\
COMMEND_ACTIVE_FACADE_PROPERTY_DEFAULT, /* facadeProperty */ \
{RTI_TRUE}, /* entityFactory: autoEnable == TRUE */ \
/* stringTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* flowControllerTable */ \
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* typeObjectTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* localTypeTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
{{8, 1024, REDA_FAST_BUFFER_POOL_UNLIMITED}, 1}, /* localTopicTable */ \
/* topicTypeTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* contentFilteredTopicTable */ \
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* contentFilterTable */ \
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
{{8, 4096,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1}, /*remoteParticipantTable*/\
{{0, 4096*3, 2}, 1}, /* remoteParticipantSecurityTable */\
/* ignoredEntityTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* ignoredLocatorTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
PRES_NO_REPLACEMENT_IGNORED_ENTITY_REPLACEMENT, /* ignoredEntityReplacementPolicy */\
PRES_PARTICIPANT_USER_DATA_MAXIMUM, /* participantUserDataMaximumLength */\
PRES_PARTICIPANT_TOPIC_DATA_MAXIMUM, /* topicDataMaximumLength */ \
0, /* flowControllerUserObjectSize */ \
0, /* flowControllerUserObjectAlignment */ \
0, /* particpiantUserObjectSize */ \
0, /* particpiantUserObjectAlignment */ \
0, /* topicUserObjectSize */ \
0, /* topicUserObjectAlignment */ \
0, /* contentFilteredTopicUserObjectSize */ \
0, /* contentFilteredTopicUserObjectAlignment */ \
1024, /* typeCodeMaxSerializedLength */\
1024, /* typeObjectMaxSerializedLength */\
1024, /* serializedTypeObjectDynamicAllocationThreshold */\
1024, /* typeObjectMaxDeserializedLength */\
1024, /* deserializedTypeObjectDynamicAllocationThreshold */\
PRES_CONTENT_FILTER_PROPERTY_LEN_MAX, /* content filter property max length */\
PRES_PARTICIPANT_PROPERTY_LIST_MAXIMUM, /* participantPropertyListMaximumLength */\
PRES_PARTICIPANT_PROPERTY_STRING_MAXIMUM, /* participantPropertyStringMaximumLength */\
PRES_LOCATOR_FILTER_DEFAULT_SEQ_LEN_MAX, \
PRES_LOCATOR_FILTER_DEFAULT_EXPRESSION_LEN_MAX, \
PRES_TRANSPORT_INFO_LIST_MAX_LENGTH, /* transportInfoListMaxLength */ \
RTI_FALSE, /* enableSecurity */ \
3, /* enabledBuiltinChannels */ \
RTI_FALSE, /* shmemUse530LocatorMatching */ \
PRES_SHMEM_REF_TRANSFER_MODE_MAX_SEGMENTS, /* shmemRefTransferModeMaxSegments */ \
PRES_TYPE_SUPPORT_QOS_POLICY_DEFAULT, /* typeSupport */ \
{RTI_NTP_TIME_SEC_MAX, RTI_NTP_TIME_FRAC_AUTO}, /* authenticationTimeThreshold */ \
PRES_DIRECTED_WRITE_AUTO_SERIALIZATION, /* directedWriteGuidSerializationKind */ \
PRES_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_DEFAULT, /* partitionMaximumCumulativeLength */ \
RTI_FALSE, /* defaultPartitionMatchAll */ \
RTI_FALSE, /* allowNoPartition */ \
PRES_LICENSE_INFORMATION_INITIALIZER, /* licenseInfo */ \
RTI_FALSE, /* isExpressWhitelisted */ \
NULL /* typeLookupServiceRequestTypesFilter */ \
}
/* clang-format on */
/*
* The default KRMHD if
* PRESParticipantSecurityAttributesBitmask_isKeyRevisionEnabled is true. If
* it is false, then the default KRMHD is 0.
*/
#define PRES_PARTICIPANT_KEY_REVISION_MAX_HISTORY_DEPTH_DEFAULT 14
/* The max key revision ID before the revision overflows back to 1. */
#define PRES_PARTICIPANT_KEY_REVISION_MAX 0xffffff
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_SEC 60
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_FRAC 0
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT \
{PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_SEC, \
PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_FRAC}
/*
* These are the (documented) minimum and maximum values of the
* dds.participant.trust_plugins.certificate_status_advance_update_duration
* property.
*
* The minimum value is 20 seconds so that, in case of failures contacting the
* responder, we trigger at least a couple of events (the minimum time between
* notifyInvalidLocalIdentityByStatusAdvanceUpdate events is 10 seconds).
*
* The maximum value corresponds to the number of seconds in 31 days. This is a
* quite large safe limit that we may decide to lower in the future.
*/
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_MIN_SEC 20
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_MAX_SEC 2678400
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_STATUS_EVENT_MINIMUM_INTERVAL_SEC 10
struct PRESRemoteParticipantProperty {
/*e derived from participant parameter */
struct PRESParticipantParameter parameter;
/*e counter that indicates if there is a change to the entities in the
remote participant */
struct REDASequenceNumber lastSn;
};
/*e \ingroup PRESParticipantModule
Default value for remote participant property.
*/
#define PRES_REMOTE_PARTICIPANT_PROPERTY_DEFAULT { \
PRES_PARTICIPANT_PARAMETER_DEFAULT, \
REDA_SEQUENCE_NUMBER_UNKNOWN }
typedef enum {
/*************************************************************************/
/*
* GROUP A: Kinds associated with specific use cases: records of the
* following kinds should not be used to perform general purpose
* security related operations (decoding, encoding, access control checking,
* etc.).
*
* PRESParticipant_gotoRemoteParticipantSecurityRecord will never reach
* records of these kinds: instead, records associated with any of these
* kinds should be reached either by weak reference, or by explicitly
* looking for their full key.
*/
/*************************************************************************/
/*i
* Secondary record of the remote participant security state. Used to do a
* secondary authentication while keeping the original one active. If
* the secondary authentication succeeds, remote participant endpoints will
* be removed and re-asserted so we send new crypto tokens.
*/
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_REAUTHENTICATION,
/*************************************************************************/
/*
* GROUP B: Kinds associated with most of the remote participant security
* related operations (decoding, encoding, access control checking,
* etc.).
*
* PRESParticipant_gotoRemoteParticipantSecurityRecord will look first for
* the MAIN record, and fallback to PENDING_FOR_REMOVAL if MAIN is not
* available.
*/
/*i
* Primary record of the remote participant security state. This identifies
* the main record used to save the current security state of a remote
* participant.
*/
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_MAIN,
/*i
* Any record with this kind contains the security state of a removed remote
* participant. We keep this security state so we are able to decode/encode
* samples from/to that participant after the remote participant has been
* locally unmatched. This is useful when removing a remote participants due
* to a local partition change, in which case we want to keep the
* participant config channel open until the remote participant acks the new
* partition configuration.
*
* WARNING! This element must be after the MAIN kind. When decoding messages
* we would look for a key larger or equal based on the participant guid. By
* setting the MAIN first it's guaranteed that if we rediscover the removed
* participant, the new state will always have priority over the obsolete
* PENDING_FOR_REMOVAL state.
*/
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_PENDING_FOR_REMOVAL,
/*
* Constant that identifies the total number of the different kinds in
* this enum. MUST ALWAYS BE THE LAST ELEMENT.
*/
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_TOTAL_NUMBER_OF_KINDS
} PRESRemoteParticipantSecurityRecordKind;
typedef enum {
AUTHENTICATION_UNINITIATED,
AUTHENTICATION_INITIALIZATION_FAILED,
AUTHENTICATION_IN_PROGRESS,
AUTHENTICATION_FAILED,
AUTHENTICATION_COMPLETED,
AUTHENTICATION_UNAUTHENTICATED,
AUTHORIZATION_FAILED,
AUTHORIZATION_FAILED_SUBJECT_NAME_WHITELIST,
AUTHORIZATION_COMPLETED
} PRESRemoteParticipantSecurityStatus;
struct REDAWorker;
struct PRESTopic;
struct PRESTopicListener;
typedef void
(*PRESTopicListenerOnInconsistentTopicCallback)(
const struct PRESTopicListener *listener, struct PRESTopic *topic,
const struct PRESInconsistentTopicStatus *status,
struct REDAWorker *worker);
struct PRESTopicListener {
PRESTopicListenerOnInconsistentTopicCallback onInconsistentTopic;
};
struct PRESInvalidLocalAdvanceNoticeStatus {
/*e
* Absolute time at which the credential will expire
*/
struct RTINtpTime expirationTime;
/*e
* The reason for the credential to expire (identity, permissions, etc.)
*/
RTI_UINT32 expirationCode;
/*e
* A descriptive message for the expiration reason integer code.
*/
const char *expirationMessage;
};
/*i
* Initializer for the expiration message. This value should never be provided
* to the user. The implementation must populate the expiration message field
* with the right value before the call to
* onInvalidLocalStatusAdvanceNotice.
*/
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_INITIALIZER NULL
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_INITIALIZER 0
/*i
* The DomainParticipant's Identity Certificate is closer to expiration than
* the expiration_advance_notice_duration property value.
* Notify the user so that they can take action and renew the certificate.
*/
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_IDENTITY_BY_CREDENTIAL \
"The DomainParticipant's Identity is about to expire."
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_IDENTITY_BY_CREDENTIAL 1
/*i
* An update of the Certificate Revocation List revoked the local
* DomainParticipant's Identity Certificate.
*/
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_IDENTITY_BY_CONTEXT \
"The DomainParticipant's Identity Certificate was revoked by the Certificate Revocation List."
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_IDENTITY_BY_STATUS 2
/*i
* The DomainParticipant's Identity Status Token (OCSP) is invalid.
* Note that we don't notify the user if the Identity Status Token is close to
* expiration. This is because the middleware will handle querying the OCSP
* responder for a new status token. Only if the update fails and the token
* expires, we notify the user.
*/
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_IDENTITY_BY_STATUS \
"The DomainParticipant's Identity Status Token (OCSP) is invalid."
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_REASON_IDENTITY_BY_STATUS 3
/*i
* The DomainParticipant's Permissions Document is closer to expiration than
* the expiration_advance_notice_duration property value.
* Notify the user so that they can take action and renew their Permissions
* Document.
*/
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_PERMISSIONS_BY_CREDENTIAL \
"The DomainParticipant's Permissions are about to expire."
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_PERMISSIONS_BY_CREDENTIAL 4
#define PRESInvalidLocalAdvanceNoticeStatus_INITIALIZER { \
RTI_NTP_TIME_ZERO, /* expirationTime */ \
PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_INITIALIZER, /* ExpirationCode */ \
PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_INITIALIZER /* ExpirationMessage */ \
}
typedef void
(*PRESParticipantListenerOnInvalidLocalStatusAdvanceNoticeCallback)(
struct PRESParticipant *participant,
const struct PRESInvalidLocalAdvanceNoticeStatus *invalidLocalCredentialStatus,
struct REDAWorker *worker);
struct PRESParticipantListener {
PRESParticipantListenerOnInvalidLocalStatusAdvanceNoticeCallback
onInvalidLocalStatusAdvanceNotice;
struct PRESTopicListener topicListener;
};
struct PRESLocalParticipantConfigListener;
typedef void
(*PRESLocalParticipantConfigListenerOnAfterLocalParticipantEnabledCallback)(
const struct PRESLocalParticipantConfigListener *me,
const struct MIGRtpsGuid *guid,
const struct PRESParticipantProperty *property,
struct REDAWorker *worker);
typedef void
(*PRESLocalParticipantConfigListenerOnAfterLocalParticipantPropertyChangedCallback)(
const struct PRESLocalParticipantConfigListener *me,
struct REDASequenceNumber *latestSn,
const struct MIGRtpsGuid *guid,
const struct PRESParticipantProperty *newProp,
struct REDAWorker *worker);
typedef void
(*PRESLocalParticipantConfigListenerOnBeforeLocalParticipantDestructionCallback)(
const struct PRESLocalParticipantConfigListener *me,
const struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
typedef void
(*PRESLocalParticipantConfigListenerOnAfterLocalParticipantDestructionCallback)(
const struct PRESLocalParticipantConfigListener *me,
const struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
typedef void
(*PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantIgnoredCallback)(
const struct PRESLocalParticipantConfigListener *me,
const struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
typedef void (
*PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantRemovedCallback)(
const struct PRESLocalParticipantConfigListener *me,
const struct MIGRtpsGuid *guid,
const struct PRESLocatorQosPolicy *metatrafficMulticastLocator,
const struct PRESLocatorQosPolicy *metatrafficUnicastLocator,
RTIBool configComplete,
struct REDAWorker *worker);
typedef RTIBool
(*PRESLocalParticipantConfigListenerOnAfterRemoteParticipantAuthenticatedCallback)(
const struct PRESLocalParticipantConfigListener *me,
const struct MIGRtpsGuid *guid,
const struct PRESRemoteParticipantProperty *property,
struct REDAWorker *worker);
typedef void (
*PRESLocalParticipantConfigListenerOnBeforeReauthenticatedRemoteParticipantConfigWriterRemovedCallback)(
const struct PRESLocalParticipantConfigListener *me,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
struct PRESLocalParticipantConfigListener {
PRESLocalParticipantConfigListenerOnAfterLocalParticipantEnabledCallback
onAfterLocalParticipantEnabled;
PRESLocalParticipantConfigListenerOnAfterLocalParticipantPropertyChangedCallback
onAfterLocalParticipantPropertyChanged;
PRESLocalParticipantConfigListenerOnBeforeLocalParticipantDestructionCallback
onBeforeLocalParticipantDestruction;
PRESLocalParticipantConfigListenerOnAfterLocalParticipantDestructionCallback
onAfterLocalParticipantDestruction;
PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantIgnoredCallback
onBeforeRemoteParticipantIgnored;
PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantRemovedCallback
onBeforeRemoteParticipantRemoved;
/* Security-related callbacks */
PRESLocalParticipantConfigListenerOnAfterRemoteParticipantAuthenticatedCallback
onAfterRemoteParticipantAuthenticated;
PRESLocalParticipantConfigListenerOnBeforeReauthenticatedRemoteParticipantConfigWriterRemovedCallback
onBeforeReauthenticatedRemoteParticipantConfigWriterRemoved;
};
#define PRES_PARTICIPANT_BUILTIN_TOPIC_NAME "DISCParticipant"
#define PRES_PARTICIPANT_BUILTIN_BOOTSTRAP_TOPIC_NAME "DISCParticipantBootstrap"
#define PRES_SERVICE_ID_PARTICIPANT_BUILTIN_TOPIC 1
struct PRESParticipantBuiltinChannelDiscoveryForwarder {
PRESBuiltinChannelForwarderTransformCdrFromPresFunction transformSampleToCdr;
};
struct PRESParticipantEntityFinalizeListener;
typedef void
(*PRESParticipantEntityFinalizeListenerOnBeforeTopicFinalizeFnc)(
void* topicFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESParticipantEntityFinalizeListenerOnBeforeContentFilteredTopicFinalizeFnc)(
void* contentFilteredTopicFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESParticipantEntityFinalizeListenerOnBeforeFlowControllerFinalizeFnc)(
void* flowControllerFinalizeParam,
void* userObject, struct REDAWorker *worker);
struct PRESParticipantEntityFinalizeListener {
PRESParticipantEntityFinalizeListenerOnBeforeTopicFinalizeFnc
onBeforeTopicFinalizeFnc;
void* topicFinalizeParam;
PRESParticipantEntityFinalizeListenerOnBeforeContentFilteredTopicFinalizeFnc
onBeforeContentFilteredTopicFinalizeFnc;
void* contentFilteredTopicFinalizeParam;
PRESParticipantEntityFinalizeListenerOnBeforeFlowControllerFinalizeFnc
onBeforeFlowControllerFinalizeFnc;
void* flowControllerFinalizeParam;
};
struct PRESPsPublicationParameter;
struct PRESPsSubscriptionParameter;
typedef enum {
PRES_AUTHENTICATION_VALIDATION_OK,
PRES_AUTHENTICATION_VALIDATION_FAILED,
PRES_AUTHENTICATION_VALIDATION_PENDING_RETRY,
PRES_AUTHENTICATION_VALIDATION_PENDING_HANDSHAKE_REQUEST,
PRES_AUTHENTICATION_VALIDATION_PENDING_HANDSHAKE_MESSAGE,
PRES_AUTHENTICATION_VALIDATION_OK_FINAL_MESSAGE,
/* for internal usage only (not exposed in DDS_ValidationResult_t) */
PRES_AUTHENTICATION_VALIDATION_UNSUPPORTED
} PRESParticipantAuthenticationValidationResult;
typedef enum {
PRES_ACCESS_CONTROL_VALIDATION_OK,
PRES_ACCESS_CONTROL_VALIDATION_FAILED,
/* for internal usage only (not exposed in DDS_ValidationResult_t) */
PRES_ACCESS_CONTROL_VALIDATION_UNSUPPORTED
} PRESParticipantAccessControlValidationResult;
typedef enum {
/*
* Update of the IdentityCredentialToken (Identity Certificate and,
* optionally, the OCSP token).
*/
PRES_AUTH_STATUS_KIND_IDENTITY_CREDENTIAL,
/* Update of the Certificate Revocation List (CRL). */
PRES_AUTH_STATUS_KIND_IDENTITY_VALIDATION_CONTEXT,
/* Update of the IdentityStatusToken (OCSP token). */
PRES_AUTH_STATUS_KIND_IDENTITY_STATUS,
/*
* Any artifact related to the secure Identity of a DomainParticipant may
* have changed. Re-evaluate the validity for all of them (Identity
* Certificate, OCSP token, CRL).
*/
PRES_AUTH_STATUS_KIND_ALL
} PRESAuthStatusKind;
typedef enum {
/* Update of the Permissions Document. */
PRES_ACCESS_CONTROL_STATUS_KIND_PERMISSIONS_CREDENTIAL
} PRESAccessControlStatusKind;
typedef RTIBool
(*PRESParticipant_LogFunction)(
struct PRESParticipant *participant,
/* inputs */
RTI_INT32 logLevel,
const char *pluginClass,
const char *pluginMethod,
const char *message,
struct REDAWorker *worker);
typedef PRESParticipantAuthenticationValidationResult
(*PRESParticipant_GetPreAuthenticatedRemoteParticipantSecurityStateFunction)(
struct PRESParticipant *participant,
/* outputs */
void **remoteIdentityHandle,
void **handshakeHandle,
void **authRequestMessage,
void *handshakeMessage,
/* inputs */
const void *remoteAuthRequestMessage,
const void *localIdentityHandle,
const struct PRESDataHolder *remoteIdentityToken,
const MIGRtpsParticipantId *remoteParticipantKey,
const struct REDABuffer *localSerializedParticipantBuiltinTopicData,
const PRESTrustedParticipantInfo *trustedParticipantInfo,
struct REDAWorker *worker);
typedef PRESParticipantAuthenticationValidationResult
(*PRESParticipant_BeginHandshakeReplyFunction)(
struct PRESParticipant *participant,
/* outputs */
void **handshakeHandle,
void *handshakeMessageOut,
/* input */
const void *handshakeMessageIn,
/* inout */
void *initiatorIdentityHandle,
/* inputs */
const void *replierIdentityHandle,
const MIGRtpsParticipantId *remoteParticipantKey,
const struct REDABuffer *serializedParticipantBuiltinTopicData,
struct REDAWorker *worker);
typedef PRESParticipantAuthenticationValidationResult
(*PRESParticipant_ProcessHandshakeFunction)(
struct PRESParticipant *participant,
/* outputs */
void *handshakeMessageOut,
/* input */
const void *handshakeMessageIn,
/* inout */
void *handshakeHandle,
/* input */
const MIGRtpsParticipantId *remoteParticipantKey,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_ReturnObjectFunction)(
struct PRESParticipant *participant,
/* inputs */
void *object,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_GetAuthenticatedRemoteParticipantSecurityStateFunction)(
struct PRESParticipant *participant,
/* outputs */
void **remotePermissionsHandle,
void **sharedSecretHandle,
void **remoteInterceptorHandle,
void **interceptorState,
/* inputs */
void *handshakeHandle,
void *remoteIdentityHandle,
void *localPermissionsHandle,
const struct PRESParticipantParameter *participantParameter,
void *localIdentityHandle,
void *localInterceptorHandle,
struct PRESParticipantSecurityAttributes *attributes,
const struct PRESDataHolder *remotePermissionsToken,
const MIGRtpsParticipantId *remoteParticipantKey,
struct REDAWorker *worker);
typedef RTIBool (
*PRESParticipant_CheckUpdatedRemoteParticipantAccessFunction)(
struct PRESParticipant *participant,
/* inputs */
void *remotePermissionsHandle,
const MIGRtpsParticipantId *remoteParticipantKey,
const struct PRESParticipantSecurityAttributes *attributes,
const struct PRESParticipantParameter *participantParameter,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_populateTrustedTokenFunction)(
struct PRESParticipant *participant,
void *sample, /* in/out */
struct REDAFastBufferPool *dataHolderPool,
RTIBool initializeSample,
int serviceId,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_SetLocalParticipantTrustedStateFunction)(
struct PRESParticipant *participant,
void *localIdentityHandle,
const PRESTrustedState *trustedState,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_VerifyRemoteParticipantTrustedStateFunction)(
struct PRESParticipant *participant,
const void *remoteIdentityHandle,
void *handshakeHandle,
const PRESTrustedState *trustedState,
struct REDAWorker *worker);
typedef PRESParticipantAuthenticationValidationResult (
*PRESParticipant_ValidateIdentityStatusFunction)(
struct PRESParticipant *participant,
struct RTINtpTime *nextEventTime,
void *identityHandle,
PRESAuthStatusKind statusKind,
struct REDAWorker *worker);
typedef PRESParticipantAccessControlValidationResult (
*PRESParticipant_ValidatePermissionsStatusFunction)(
struct PRESParticipant *participant,
struct RTINtpTime *nextEventTime,
void *permissionsHandle,
PRESAccessControlStatusKind statusKind,
struct REDAWorker *worker);
typedef int (*PRESParticipant_GetMaxPrivateSignatureSizeFunction)(
struct PRESParticipant *participant,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_PrivateSignFunction)(
struct PRESParticipant *participant,
struct REDABuffer *signature, /* out */
const struct REDABuffer *dataToSign,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_VerifyPrivateSignatureFunction)(
struct PRESParticipant *participant,
const struct REDABuffer *signedData,
const struct REDABuffer *signature,
const void *remoteIdentityHandle,
struct REDAWorker *worker);
typedef RTI_INT32 (*PRESParticipant_GetSubjectNameStringFunction)(
struct PRESParticipant *participant,
char *subjectName,
RTI_UINT32 *subjectNameSize,
const void *identityHandle,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_GetTopicAttributesFunction)(
struct PRESParticipant *participant,
/* output */
struct PRESTopicSecurityAttributes *attributes,
/* inputs */
void *permissionsHandle,
const char *topicName,
const struct PRESSequenceString *topicAliasNames,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_GetEndpointAttributesFunction)(
struct PRESParticipant *participant,
/* output */
struct PRESEndpointSecurityAttributes *attributes,
/* inputs */
const struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo *symmetricCipherAlgorithms,
void *permissionsHandle,
const char *topicName,
const struct PRESSequenceString *topicAliasNames,
MIGRtpsObjectId objectId,
struct REDAWorker *worker);
typedef RTIBool (*PRESParticipant_ReturnEndpointAttributesFunction)(
struct PRESParticipant *participant,
/* inout */
struct PRESEndpointSecurityAttributes *attributes,
/* input */
MIGRtpsRWType endpointType,
struct REDAWorker *worker);
typedef void *
(*PRESParticipant_RegisterLocalEndpointFunction)(
struct PRESParticipant *participant,
struct PRESEndpointSecurityAlgorithmInfo *adjustedAlgorithmInfo,
/* inputs */
void *participantInterceptorHandle,
struct PRESPropertyQosPolicy *endpointProperties,
const struct PRESEndpointSecurityAttributes *endpointSecurityAttributes,
const struct MIGRtpsGuid *endpointGuid,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_CheckRemoteDataWriterFunction)(
struct PRESParticipant *participant,
RTIBool *allowProxy,
/* inputs */
void *permissionsHandle,
const struct PRESPsPublicationParameter *publicationData,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_CheckRemoteDataReaderFunction)(
struct PRESParticipant *participant,
RTIBool *allowProxy,
/* inputs */
void *permissionsHandle,
const struct PRESPsSubscriptionParameter *subscriptionData,
struct REDAWorker *worker);
typedef void *
(*PRESParticipant_RegisterMatchedRemoteEndpointFunction)(
struct PRESParticipant *participant,
/* inputs */
void *localEndpointHandle,
void *remoteParticipantInterceptorHandle,
const void *matchedLocalEndpointHandle,
void *sharedSecret,
MIGRtpsRWType remoteEndpointType,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_CheckMatchPermissionsFunction)(
struct PRESParticipant *participant,
/* inputs */
void *localEndpointPermissionsHandle,
void *remoteEndpointPermissionsHandle,
MIGRtpsRWType remoteEndpointType,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_AssertLocalEntityInterceptorStateFunction)(
struct PRESParticipant *participant,
/* output */
void *state,
/* inputs */
void *localHandle,
void *remoteHandle,
const struct MIGRtpsGuid *localGuid,
const struct MIGRtpsGuid *remoteGuid,
RTI_UINT32 revisionId,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_SetRemoteInterceptorStateFunction)(
struct PRESParticipant *participant,
/* output */
void *remoteInterceptorHandle,
/* inputs */
const void *localInterceptorHandle,
const void *interceptorState,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_TransformOutgoingMetaDataFunction)(
struct PRESParticipant *participant,
/* output */
struct REDABuffer *transformedMetaData,
/* inputs */
const struct REDABuffer *outgoingMetaDataBuffers,
int outgoingMetaDataBufferCount,
void *senderHandle,
const struct REDAInlineList *receiverHandleList,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_TransformOutgoingRtpsMessageFunction)(
struct PRESParticipant *participant,
/* output */
struct REDABuffer *transformedMetaData,
/* in/out */
RTI_INT32 *receiverHandleListIndex,
/* inputs */
const struct REDABuffer *outgoingMetaDataBuffers,
int outgoingMetaDataBufferCount,
void *senderHandle,
const struct REDAInlineList *receiverHandleList,
RTIBool encodeWithPresharedKey,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_TransformIncomingContentFunction)(
struct PRESParticipant *participant,
/* output */
struct REDABuffer *transformedData,
/* inputs */
const struct REDABuffer *incomingData,
void *receiverHandle,
void *senderHandle,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_PreprocessInterceptorSubmsgFunction)(
struct PRESParticipant *participant,
/* outputs */
MIGRtpsRWType *interceptorSubmessageCategory,
void **dataWriterHandle,
void **dataReaderHandle,
/* inputs */
const struct REDABuffer *incomingSubmessage,
void *receivingParticipantHandle,
void *sendingParticipantHandle,
struct REDAWorker *worker);
typedef unsigned int
(*PRESParticipant_GetTransformedOutgoingSerializedSampleSizeFunction)(
struct PRESParticipant *participant,
/* input */
unsigned int serializedSampleSize);
typedef RTIBool
(*PRESParticipant_TransformOutgoingSerializedDataFunction)(
struct PRESParticipant *participant,
/* output */
struct REDABuffer *transformedSerializedData,
/* inputs */
const struct REDABuffer *outgoingSerializedDataBuffers,
int outgoingSerializedDataBufferCount,
void *senderHandle,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_SetLocalInterceptorStateFunction)(
struct PRESParticipant *participant,
/* inputs */
void *localEntityHandle,
void *interceptorState,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_TransformInterceptorStateFunction)(
struct PRESParticipant *participant,
struct REDABuffer *serializedInterceptorState,
void *interceptorState,
const struct REDABuffer *transformationKey,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_CreateLocalKeyRevisionFunction)(
struct PRESParticipant *participant,
/* outputs */
RTI_UINT32 *revisionId,
/* sent to all participants upon key regeneration */
void **localLatestKeyRevisionToken,
/* sent to individual late-joiner participants when they join */
void **localAllKeyRevisionTokens,
/*
* The maximum number of elements that localAllKeyRevisionTokens should
* contain.
*/
RTI_UINT32 maxAllKeyRevisionTokens,
/* in/out: updated with new key revision and refreshed key material */
void *interceptorHandle,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_SetRemoteKeyRevisionTokensFunction)(
struct PRESParticipant *participant,
/* in/out: updated with new key revision and refreshed key material */
void *interceptorHandle,
/* input */
const void *remoteKeyRevisionTokens, /* received from a remote participant */
struct REDAWorker *worker);
typedef enum {
PRES_PARTICIPANT_CREDENTIAL_KIND_IDENTITY,
PRES_PARTICIPANT_CREDENTIAL_KIND_IDENTITY_VALIDATION_CONTEXT,
PRES_PARTICIPANT_CREDENTIAL_KIND_IDENTITY_STATUS,
PRES_PARTICIPANT_CREDENTIAL_KIND_PERMISSIONS
} PRESParticipantCredentialKind;
typedef enum {
PRES_PARTICIPANT_CREDENTIAL_ACTION_VALIDATE,
PRES_PARTICIPANT_CREDENTIAL_ACTION_PROPAGATE
} PRESParticipantCredentialAction;
typedef RTIBool
(*PRESParticipant_SetRemoteTrustedTokenFunction)(
struct PRESParticipant *participant,
void *handle, /* identity or permisssions. */
const void *token,
PRESParticipantCredentialKind tokenKind,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_ActivateLocalKeyRevisionFunction)(
struct PRESParticipant *participant,
void *interceptorHandle,
RTI_UINT32 revisionId,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_RetransformOutgoingSerializedDataFunction)(
struct PRESParticipant *participant,
/* inouts */
struct REDABuffer *transformedSerializedData,
void *interceptorHandle,
struct REDABuffer *retransformScratchBuffer,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_RetransformOutgoingSerializedDataFromDurableWriterHistoryFunction)(
struct PRESParticipant *participant,
/* inouts */
struct REDABuffer *transformedSerializedData,
void *interceptorHandle,
struct REDABuffer *retransformScratchBuffer,
/* inputs */
const void *historicalKeyRevisionInterceptorState,
RTIBool keyRevisionsPreviouslyEnabled,
struct REDAWorker *worker);
typedef RTIBool
(*PRESParticipant_GetAdjustedLocalParticipantKeyFunction)(
struct PRESParticipant *participant,
struct MIGRtpsGuid *adjustedKey,
const struct MIGRtpsGuid *candidateKey,
struct REDAWorker *worker);
struct PRESParticipantSecurityForwarder {
PRESParticipant_ReturnObjectFunction returnIdentityHandle;
PRESParticipant_ReturnObjectFunction returnIdentityToken;
PRESParticipant_ReturnObjectFunction returnPermissionsHandle;
PRESParticipant_ReturnObjectFunction returnPermissionsToken;
PRESParticipant_ReturnObjectFunction unregisterParticipant;
PRESParticipant_LogFunction log;
PRESParticipant_GetPreAuthenticatedRemoteParticipantSecurityStateFunction
getPreAuthenticatedRemoteParticipantSecurityState;
PRESParticipant_ReturnObjectFunction returnHandshakeHandle;
PRESParticipant_GetAuthenticatedRemoteParticipantSecurityStateFunction
getAuthenticatedRemoteParticipantSecurityState;
PRESParticipant_CheckUpdatedRemoteParticipantAccessFunction
checkUpdatedRemoteParticipantAccess;
PRESParticipant_populateTrustedTokenFunction populateTrustedToken;
PRESParticipant_ReturnObjectFunction returnSharedSecretHandle;
PRESParticipant_SetLocalParticipantTrustedStateFunction
setLocalParticipantTrustedState;
PRESParticipant_VerifyRemoteParticipantTrustedStateFunction
verifyRemoteParticipantTrustedState;
PRESParticipant_ValidateIdentityStatusFunction validateIdentityStatus;
PRESParticipant_ValidatePermissionsStatusFunction validatePermissionsStatus;
PRESParticipant_GetMaxPrivateSignatureSizeFunction
getMaxPrivateSignatureSize;
PRESParticipant_PrivateSignFunction privateSign;
PRESParticipant_VerifyPrivateSignatureFunction verifyPrivateSignature;
PRESParticipant_GetSubjectNameStringFunction getSubjectNameString;
PRESParticipant_GetTopicAttributesFunction getTopicAttributes;
PRESParticipant_GetEndpointAttributesFunction getEndpointAttributes;
PRESParticipant_ReturnEndpointAttributesFunction returnEndpointAttributes;
PRESParticipant_ReturnObjectFunction preUnregisterDataReader;
PRESParticipant_ReturnObjectFunction preUnregisterDataWriter;
PRESParticipant_ReturnObjectFunction unregisterDataReader;
PRESParticipant_ReturnObjectFunction unregisterDataWriter;
PRESParticipant_CheckRemoteDataReaderFunction checkRemoteDataReader;
PRESParticipant_CheckRemoteDataWriterFunction checkRemoteDataWriter;
PRESParticipant_BeginHandshakeReplyFunction beginHandshakeReply;
PRESParticipant_ProcessHandshakeFunction processHandshake;
PRESParticipant_RegisterLocalEndpointFunction registerLocalDataReader;
PRESParticipant_RegisterLocalEndpointFunction registerLocalDataWriter;
PRESParticipant_RegisterMatchedRemoteEndpointFunction
registerMatchedRemoteEndpoint;
PRESParticipant_CheckMatchPermissionsFunction checkMatchPermissions;
PRESParticipant_SetRemoteInterceptorStateFunction
setRemoteParticipantInterceptorState;
PRESParticipant_SetRemoteInterceptorStateFunction
setRemoteDataWriterInterceptorState;
PRESParticipant_SetRemoteInterceptorStateFunction
setRemoteDataReaderInterceptorState;
PRESParticipant_AssertLocalEntityInterceptorStateFunction
assertLocalEntityInterceptorState;
PRESParticipant_TransformOutgoingMetaDataFunction
transformOutgoingDataWriterSubmessage;
PRESParticipant_TransformOutgoingMetaDataFunction
transformOutgoingDataReaderSubmessage;
PRESParticipant_TransformOutgoingRtpsMessageFunction
transformOutgoingRtpsMessage;
PRESParticipant_TransformIncomingContentFunction
transformIncomingRtpsMessage;
PRESParticipant_PreprocessInterceptorSubmsgFunction
preprocessInterceptorSubmsg;
PRESParticipant_TransformIncomingContentFunction
transformIncomingDataWriterSubmessage;
PRESParticipant_TransformIncomingContentFunction
transformIncomingDataReaderSubmessage;
/*** serialized data forwarders ***/
PRESParticipant_GetTransformedOutgoingSerializedSampleSizeFunction
getTransformedOutgoingSerializedSampleSize;
PRESParticipant_TransformOutgoingSerializedDataFunction
transformOutgoingSerializedData;
PRESParticipant_TransformIncomingContentFunction
transformIncomingSerializedData;
/*** persistent crypto tokens forwarders ***/
PRESParticipant_SetLocalInterceptorStateFunction
setLocalDataWriterInterceptorState;
PRESParticipant_TransformInterceptorStateFunction
transformOutgoingLocalDataWriterInterceptorState;
PRESParticipant_TransformInterceptorStateFunction
transformIncomingLocalDataWriterInterceptorState;
/*** key regeneration and redistribution forwarders ***/
PRESParticipant_CreateLocalKeyRevisionFunction
createLocalKeyRevision;
PRESParticipant_SetRemoteKeyRevisionTokensFunction
setRemoteKeyRevisionTokens;
PRESParticipant_ActivateLocalKeyRevisionFunction
activateLocalKeyRevision;
PRESParticipant_RetransformOutgoingSerializedDataFunction
retransformOutgoingSerializedData;
PRESParticipant_RetransformOutgoingSerializedDataFromDurableWriterHistoryFunction
retransformOutgoingSerializedDataFromDurableWriterHistory;
PRESParticipant_SetRemoteTrustedTokenFunction setRemoteTrustedToken;
PRESParticipant_GetAdjustedLocalParticipantKeyFunction getAdjustedLocalParticipantKey;
};
struct PRESParticipantSecurityHandles {
/*
* WARNING: This field is the subject of a copyReadWriteArea call, so pay
* attention to the order of this field relative to other fields.
*/
void *interceptor;
void *identity;
void *permissions;
};
#define PRES_PARTICIPANT_SECURITY_HANDLES_DEFAULT { \
NULL /* interceptor */, \
NULL /* identity */, \
NULL /* permissions */ \
}
struct PRESParticipantSecurity {
const struct PRESParticipantSecurityForwarder *forwarder;
struct PRESParticipantSecurityHandles handles;
struct PRESParticipantSecurityAttributes attributes;
/*
* The latest key revision that has been created. If this revision is not
* fully-acknowledged and activated, then we will not generate new revisions.
*/
RTI_UINT32 latestKeyRevisionId;
/* sent to all participants when key is regenerated */
void *latestKeyRevisionInfoToken;
/* sent to every late-joiner participant when they join */
void *allKeyRevisionInfoTokens;
/*
* Sent to all remote DomainParticipants when the local Identity Certificate
* changes. Thread-safety: only the event thread should modify or use this
* token.
*/
void *identityCredentialToken;
/*
* Sent to all remote DomainParticipants when the local Identity Status
* changes. Thread-safety: only the event thread should modify or use this
* token.
*/
void *identityStatusToken;
/*
* Sent to all remote DomainParticipants when the local Permissions change.
* Thread-safety: only the event thread should modify or use this token.
*/
void *permissionsCredentialToken;
};
#define PRES_PARTICIPANT_SECURITY_DEFAULT { \
NULL, /* forwarder */ \
PRES_PARTICIPANT_SECURITY_HANDLES_DEFAULT, \
PRES_PARTICIPANT_SECURITY_ATTRIBUTES_DEFAULT, \
0, /* latestKeyRevisionId */ \
NULL, /* latestKeyRevisionInfoToken */ \
NULL, /* allKeyRevisionInfoTokens */ \
NULL, /* identityCredentialToken */ \
NULL, /* identityStatusToken */ \
NULL /* permissionsCredentialToken */ \
}
struct PRESParticipantGenericMessageCreateSampleParameter {
struct PRESParticipantGenericMessagePool *pool;
void *sample;
};
#define PRES_PARTICIPANT_GENERIC_MESSAGE_CREATE_SAMPLE_PARAMETER_DEFAULT { \
NULL, /* pool */ \
NULL /* sample */ \
}
struct REDADatabase;
struct REDAExclusiveArea;
struct RTIClock;
extern PRESDllExport
struct PRESParticipant * PRESParticipant_new(
const struct MIGRtpsGuid *guid,
struct RTINetioConfigurator* configuratorIn,
struct REDAWorkerFactory *workerFactory,
struct RTIEventActiveDatabase *database,
struct RTIClock *clock,
struct RTIClock *timestampClock,
struct REDAExclusiveArea *tableEa,
struct REDAExclusiveArea *recordEa,
struct REDAExclusiveArea *remoteRecordEa,
const struct COMMENDActiveFacadeThreadListener *threadListener,
const struct PRESParticipantEntityFinalizeListener *finalizeListener,
const struct PRESParticipantProperty *property,
const struct PRESParticipantListener *listener,
PRESStatusKindMask listenerMask,
const struct PRESParticipantSecurity *security,
struct RTIOsapiThreadFactory *recv_thread_factory,
struct RTIOsapiThreadFactory *event_thread_factory,
struct RTIOsapiThreadFactory *asynch_pub_thread_factory,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_enable(
struct PRESParticipant *me,
RTIBool *autoenableContainedEntities,
const struct PRESLocatorQosPolicy *defaultUnicastLocator,
const struct PRESLocatorQosPolicy *metatrafficUnicastLocator,
const struct PRESReducedLocatorQosPolicy *metatrafficMulticastLocator,
const struct PRESSequenceTransportInfo *transportInfoSequence,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_postEnable(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_postIdentityStatusValidationEvent(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_enableAllEntities(struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_destroyAllEntities(struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_destroyCustomFlowControllers(
struct PRESParticipant *me, int *failReason, struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_isEnabled(struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isTypeObjectV2Enabled(const struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isAuthenticationEnabled(const struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isFullSecurityEnabled(const struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isKeyRegenerationEnabled(struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isParticipantDiscoveryStateless(
struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isParticipantDiscoverySampleSignatureDisabled(
struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_isSecureParticipantDiscoveryDisabled(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_isReceivedDiscoveryProtectionDisabled(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_areUnauthenticatedParticipantsAllowed(
struct PRESParticipant *me);
extern PRESDllExport
PRESBuiltinEndpointMask PRESParticipant_getBuiltinEndpointMask(
struct PRESParticipant *me,
RTIBool isVendor);
extern PRESDllExport RTIBool
PRESParticipant_containsEntity(
struct PRESParticipant *me,
const struct MIGRtpsGuid *guid);
extern PRESDllExport
RTIBool PRESParticipant_hasTopic(struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_preShutdown(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_preShutdownWakeup(struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_shutdown(struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_delete(struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
struct PRESService;
struct PRESTypePlugin;
extern PRESDllExport
RTIBool PRESParticipant_registerType(
struct PRESParticipant *me,
int *failReason,
const struct PRESTypePlugin *typePlugin,
const char *typeName,
void *registrationData,
struct REDAWorker *worker);
extern PRESDllExport RTIBool
PRESParticipant_unregisterType(
struct PRESParticipant *me,
int *failReason,
const char *typeName,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getRegisteredUserTypes(
const struct PRESParticipant *me,
RTI_UINT32 *typeCount,
struct PRESRegisteredType ***userTypeArray,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getRegisteredUserType(
const struct PRESParticipant *me,
struct PRESRegisteredType **userType,
const char *edTypeName,
struct REDAWorker *worker);
struct PRESTopic;
struct PRESContentFilteredTopic;
struct PRESContentFilterType;
struct PRESTopicProperty;
extern PRESDllExport
struct PRESTopic* PRESParticipant_createTopic(
struct PRESParticipant *me,
int *failReason,
RTIBool *autoenableContainedEntities,
const char *topicName,
const char *typeName,
MIGRtpsObjectId oid,
struct PRESTopicProperty *property,
const struct PRESTopicListener *listener,
PRESStatusKindMask listenerMask,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_destroyTopic(
struct PRESParticipant *me,
int *failReason,
struct PRESTopic *topic,
struct REDAWorker *worker);
extern PRESDllExport
struct PRESTopic* PRESParticipant_lookupTopic(
struct PRESParticipant *me,
const char *topicName, struct REDAWorker *worker);
extern PRESDllExport
struct PRESTopic* PRESParticipant_findTopic(
struct PRESParticipant *me,
const char *topicName,
const char *typeName,
const struct RTINtpTime *timeout,
struct REDAWorker *worker);
extern PRESDllExport int
PRESParticipant_getUserTopicCount(
struct PRESParticipant *participant,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_lockAllTopics(
struct PRESParticipant *participant,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport RTIBool
PRESParticipant_unlockAllTopics(
struct PRESParticipant *participant,
int *failReason,
struct REDAWorker *worker);
#define PRESParticipantTopicIterator REDACursor
#define PRESParticipantCFTIterator REDACursor
extern PRESDllExport
struct PRESParticipantTopicIterator *
PRESParticipant_getTopicIterator(
struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport void
PRESParticipant_returnUserTopicIterator(
struct PRESParticipant *me,
struct PRESParticipantTopicIterator *iterator);
extern PRESDllExport
struct PRESTopic *
PRESParticipant_getNextTopic(
struct PRESParticipant *me,
int *failReason,
struct PRESParticipantTopicIterator *iterator,
MIGRtpsObjectSuffix topicSuffix);
extern PRESDllExport
int PRESParticipant_getCFTCount(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
struct PRESParticipantCFTIterator *
PRESParticipant_getCFTIterator(
struct PRESParticipant *me,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport void
PRESParticipant_returnCFTIterator(
struct PRESParticipant *me,
struct PRESParticipantCFTIterator *iterator);
extern PRESDllExport
struct PRESContentFilteredTopic *
PRESParticipant_getNextCFT(
struct PRESParticipant *me,
int *failReason,
struct PRESParticipantCFTIterator *iterator);
extern PRESDllExport
struct PRESEntity* PRESParticipant_lookupEntity(
struct PRESParticipant *me,
int *failReason,
struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
#define PRESTopicTypeIterator REDACursor
extern PRESDllExport
RTIBool PRESParticipant_beginGetTopicTypes(
struct PRESParticipant *me,
struct PRESTopicTypeIterator **iter,
int *maxTopicTypes,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_endGetTopicTypes(
struct PRESParticipant *me,
struct PRESTopicTypeIterator *iter,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_registerContentFilterType(
struct PRESParticipant *me,
int *failReason,
const char *name,
const struct PRESContentFilter * presContentFilter,
RTIBool isBuiltin,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_unregisterContentFilterType(
struct PRESParticipant *me,
int *failReason,
const char *name,
void **filter_object,
struct REDAWorker *worker);
struct REDAWeakReference;
extern PRESDllExport
RTIBool PRESParticipant_lookupContentFilterType(
struct PRESParticipant *me,
const char *name,
struct PRESContentFilter * presContentFilter,
struct REDAWeakReference *filterWR,
RTIBool update_refcount,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getContentFilterTypes(
struct PRESParticipant *me,
char** filter_names,
int* num_filters,
RTIBool has_ownership,
struct REDAWorker *worker);
extern PRESDllExport
struct PRESContentFilteredTopic* PRESParticipant_createContentFilteredTopic(
struct PRESParticipant *me,
int *failReason,
const char *name,
struct PRESTopic *related_topic,
const char *filter_expression,
const char **filter_parameters,
RTI_INT32 parameter_length,
const char *filter_name,
const struct PRESContentFilteredTopicProperty *property,
struct REDAWorker *worker);
extern PRESDllExport
struct PRESContentFilteredTopicProperty PRESParticipant_getDefaultContentFilteredTopicProperty(void);
extern PRESDllExport
RTIBool PRESParticipant_destroyContentFilteredTopic(
struct PRESParticipant *me,
int *failReason,
struct PRESContentFilteredTopic *topic,
struct REDAWorker *worker);
extern PRESDllExport
struct PRESContentFilteredTopic*
PRESParticipant_lookupContentFilteredTopic(
struct PRESParticipant *me,
const char *name,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_assertRemoteParticipant(
struct PRESParticipant *me,
int *failReason,
const MIGRtpsParticipantId *remoteParticipantId,
struct PRESRemoteParticipantProperty *remoteParticipantProperty,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_updateRemoteParticipantLiveliness(
struct PRESParticipant *me,
int *failReason,
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
RTIBool manualLivelinessUpdate,
RTIBool isSecureLiveliness,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_updateRemoteEndpointUnicastLocatorsWithCursor(
struct PRESParticipant *me,
struct REDACursor *cursor,
struct REDAWorker *worker);
struct PRESLivelinessParameter;
extern PRESDllExport
RTIBool PRESParticipant_removeRemoteParticipant(
struct PRESParticipant *me, int *failReason,
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_removeRemoteParticipantFromLocator(
struct PRESParticipant *me,
struct RTINetioLocator *peer_locator,
struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_unignoreLocator(
struct PRESParticipant *me,
struct RTINetioLocator *peer_locator,
struct REDAWorker *worker);
extern PRESDllExport RTIBool
PRESParticipant_getDiscoveryLocatorRemoteParticipantRefCount(
struct PRESParticipant *me,
RTI_UINT32 *fullyDiscoveredCount,
RTI_UINT32 *partiallyDiscoveredCount,
const struct RTINetioLocator *locator,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_unregisterRemoteParticipant(
struct PRESParticipant *me,
int *failReason,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
#define PRESRemoteParticipantIterator REDACursor
extern PRESDllExport
RTIBool PRESParticipant_beginGetRemoteParticipants(
struct PRESParticipant *me,
struct PRESRemoteParticipantIterator **iter,
int *maxRemoteParticipants,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_endGetRemoteParticipants(
struct PRESParticipant *me,
struct PRESRemoteParticipantIterator *iter,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getNextRemoteParticipant(
struct PRESParticipant *me,
MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
void **remoteParticipantIdentityHandle,
int *failReason,
RTIBool *participantConfigComplete,
struct PRESRemoteParticipantIterator *iter,
struct REDAWorker *worker);
struct PRESGroupListener;
extern PRESDllExport
struct PRESGroup* PRESParticipant_createGroup(
struct PRESParticipant *me,
int *failReason,
RTIBool *autoenableContainedEntities,
MIGRtpsObjectId oid,
const struct PRESGroupProperty *property,
const struct PRESGroupListener *listener,
PRESStatusKindMask listenerMask,
struct REDAExclusiveArea *ea,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_destroyGroup(struct PRESParticipant *me,
int *failReason,
struct PRESGroup *group,
struct REDAWorker *worker);
struct PRESLocalEndpointListener;
struct PRESLocalEndpointStatisticsListener;
extern PRESDllExport struct PRESLocalEndpoint *
PRESParticipant_createLocalEndpoint(
struct PRESParticipant *me,
int *failReason,
RTIBool *autoenableContainedEntities,
struct PRESGroup *group,
struct PRESTopic *topic,
MIGRtpsObjectId oid,
const struct PRESLocalEndpointProperty *property,
const struct PRESLocalEndpointListener *listener,
PRESStatusKindMask internalListenerMask,
PRESStatusKindMask userListenerMask,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_destroyLocalEndpoint(
struct PRESParticipant *me,
int *failReason,
struct PRESGroup *group,
struct PRESLocalEndpoint *localEndpoint, struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_assertRemoteEndpoint(
struct PRESParticipant *me,
int *failReason,
const struct MIGRtpsGuid *guid,
const struct PRESRemoteEndpointProperty *property,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_isRemoteEndpointMatched(
const struct PRESParticipant *localParticipant,
MIGRtpsObjectId localEndpointOid,
const struct MIGRtpsGuid *remoteEndpointGuid,
RTIBool requiresCompatibility,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_removeRemoteEndpoint(
struct PRESParticipant *me,
int *failReason,
const struct MIGRtpsGuid *guid, struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_removeRemoteEndpointsOfRemoteParticipant(
struct PRESParticipant *me,
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
RTIBool delayConfigRemoval,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_unregisterRemoteEndpointsOfRemoteParticipant(
struct PRESParticipant *me,
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_removeRemoteEndpointsWithOid(
struct PRESParticipant *me, MIGRtpsObjectId remoteOid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_unregisterRemoteEndpoint(
struct PRESParticipant *me,
int *failReason,
const struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
extern PRESDllExport
PRESWord *PRESParticipant_getUserObject(struct PRESParticipant *me);
extern PRESDllExport
void* PRESEntity_getUserObject(struct PRESEntity *me);
extern PRESDllExport
MIGRtpsHostId PRESParticipant_getHostId(
const struct PRESParticipant *me);
extern PRESDllExport
const char * PRESParticipant_getRoleName(const struct PRESParticipant *me);
extern PRESDllExport
MIGRtpsAppId PRESParticipant_getAppId(
const struct PRESParticipant *me);
extern PRESDllExport
MIGRtpsInstanceId PRESParticipant_getInstanceId(
const struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_setListener(
struct PRESParticipant *me,
const struct PRESParticipantListener *listener,
PRESStatusKindMask mask,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getProperty(
const struct PRESParticipant *me,
struct PRESParticipantProperty *property,
struct REDAWorker *worker);
extern PRESDllExport
REDAUnicodeNormalizationKind PRESParticipant_getUnicodeNormalizationKind(
const struct PRESParticipant *me);
extern PRESDllExport
REDACharacterEncodingKind PRESParticipant_getCharacterEncodingKind(
const struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_sqlFilterSupportsEscapedCharacters(
const struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_setProperty(
struct PRESParticipant *me,
int *failReason,
const struct PRESParticipantProperty *property,
struct REDAWorker *worker);
extern PRESDllExport
void PRESParticipant_getGuid(
const struct PRESParticipant *me,
struct MIGRtpsGuid *guid);
extern PRESDllExport
const struct MIGRtpsGuid * PRESParticipant_getGuidRef(
const struct PRESParticipant *me);
/*e \ingroup PRESParticipantModule
Install local participant configuration listener on the participant.
Setup local participant configuration listener for this participant.
Only one local particpiant configuration listener can be attached to the
participant. If a listener was already set, the operation will replace it
with the new one.
@pre Valid arguments.
@param listener \b In. Local participant configuration listener to be set up.
All methods on the listener are supposed to be defined if listener is not
NULL. In the case when listener is NULL, it is equivalent to removing the
local participant configuration listener.
@return RTI_TRUE if successful. RTI_FALSE otherwise.
*/
extern PRESDllExport
RTIBool PRESParticipant_setLocalParticipantConfigListener(
struct PRESParticipant *me,
const struct PRESLocalParticipantConfigListener *listener,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_setParticipantBuiltinChannelDiscoveryForwarder(
struct PRESParticipant *me,
const struct PRESParticipantBuiltinChannelDiscoveryForwarder *forwarder,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getRemoteParticipantProperty(
const struct PRESParticipant *me,
struct PRESRemoteParticipantProperty *property,
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_getRemoteParticipantProductVersion(
const struct PRESParticipant *me,
struct PRESProductVersion *remoteProductVersion,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
extern PRESDllExport
PRESRemoteParticipantSecurityStatus
PRESParticipant_getRemoteParticipantIdentityStatus(
const struct PRESParticipant *me,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_isRemoteParticipantAuthenticated(
const struct PRESParticipant *me,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
/*e \ingroup PRESParticipantModule
*
* Access the existing configuration listener attached to the participant for
* all endpoints for the given service ID.
*
* Service needs to be asserted to the participant.
*
* @pre Valid arguments.
*
* @return pointer to endpoint configuration listener for the service
* with the given service ID.. RTI_FALSE otherwise, which can happen if
* there is no service asserted with the given service ID, or it fails to setup
* endpoint configuration listener on the given service.
*/
extern PRESDllExport
const struct PRESEndpointConfigListener *
PRESParticipant_getEndpointConfigListener(
const struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_setEndpointConfigListener(
struct PRESParticipant *me,
const struct PRESEndpointConfigListener *listener,
struct REDAWorker *worker);
struct PRESPsEndpointParameter;
extern PRESDllExport
RTIBool
PRESParticipant_getRemoteEndpointParameter(
struct PRESParticipant *participant,
struct PRESPsEndpointParameter *remoteEndpointParameter,
struct REDACursor *remoteEndpointCursor,
const struct MIGRtpsGuid *remoteEndpointGuid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_assertLiveliness(struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_refresh(
struct PRESParticipant *me, struct REDAWorker *worker);
extern PRESDllExport
PRESStatusKind PRESParticipant_getStatusChanges(struct PRESParticipant *me);
extern PRESDllExport
const struct PRESTypePlugin *PRESParticipant_lookupTypePlugin(
struct PRESParticipant *me, const char *typeName,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_ignoreRemotePeer(
struct PRESParticipant *me,
const char* peer_desc_string,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_ignoreRemoteParticipant(
struct PRESParticipant *me,
const struct MIGRtpsGuid* remoteParticipantGuidIn,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_onAfterRemoteParticipantSecureVolatileReaderInactivated(
struct PRESParticipant *me,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
extern PRESDllExport
RTI_INT32 PRESParticipant_getRemoteParticipantSubjectName(
struct PRESParticipant *me,
char *subjectName,
RTI_UINT32 *subjectNameSize,
const struct MIGRtpsGuid *remoteParticipantGuid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_triggerKeyRegeneration(
struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_ignoreRemoteEndpoint(
struct PRESParticipant *me,
const struct MIGRtpsGuid* remoteEndpointGuidIn,
struct REDAWorker *worker);
extern PRESDllExport
struct COMMENDFacade* PRESParticipant_getFacade(struct PRESParticipant* me);
extern PRESDllExport void PRESParticipant_cleanup(struct PRESParticipant *me,
struct REDAWorker *worker);
extern PRESDllExport
void PRESParticipant_getSecurity(
const struct PRESParticipant *me,
struct PRESParticipantSecurity *security);
extern PRESDllExport
const struct PRESDataHolder * PRESParticipant_getIdentityToken(
const struct PRESParticipant *me);
extern PRESDllExport
const struct PRESDataHolder * PRESParticipant_getPermissionsToken(
const struct PRESParticipant *me);
extern PRESDllExport
RTIBool PRESParticipant_getTopicSecAttributes(
struct PRESParticipant *me,
struct PRESTopicSecurityAttributes *attributes,
const char *topicName,
const struct PRESSequenceString *topicAliasNames,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getEndpointSecAttributes(
struct PRESParticipant *me,
struct PRESEndpointSecurityAttributes *attributes,
const char *topicName,
const struct PRESSequenceString *topicAliasNames,
MIGRtpsObjectId objectId,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_returnEndpointSecAttributes(
struct PRESParticipant *me,
struct PRESEndpointSecurityAttributes *attributes,
MIGRtpsRWType rwType,
struct REDAWorker *worker);
#define PRES_INSTANCE_HANDLE_INVALID_KEYHASH 0
/* This is the classic keyhash generation. It is not safe because if the
* maximum serialized size of the key is <= 16 the keyhash is the serialized
* key in big endian order.
*
* Built-in Publication and Subscription DataReaders always use unsecure
* keyhashes because the encryption occurs at the RTPS submessage level,
* not at the payload level.
*
* Because of that, the publication, and subscription handles retrieved through
* different APIs also contain PRES_INSTANCE_HANDLE_VALID_UNSECURE_KEYHASH as
* isValid value.
*/
#define PRES_INSTANCE_HANDLE_VALID_UNSECURE_KEYHASH 1
/*
* This is used by DataWriters and DataReaders for which is_key_protected is
* set to true.
*/
#define PRES_INSTANCE_HANDLE_VALID_SECURE_KEYHASH 2
/*
* This is the v2 keyhash generation. It is not safe because if the maximum
* serialized size of the key is <= 16 the keyhash is the serialized key in big
* endian order.
*/
#define PRES_INSTANCE_HANDLE_VALID_UNSECURE_KEYHASH_V2 3
/*
* This is used by v2 DataWriters and DataReaders for which is_key_protected is
* set to true.
*/
#define PRES_INSTANCE_HANDLE_VALID_SECURE_KEYHASH_V2 4
struct PRESInstanceHandle {
/*e We use guid to represent an instance */
struct MIGRtpsKeyHash keyHash;
/*e so that we can allow all 0 guid values
* This field encodes three kinds of information:
* 1) Whether or not the instance handle is valid or NIL.
* 2) For valid instance handles, this field encodes the kind of keyhash
* generation. It can be secure or unsecure. With secure keyhash the
* keyhash is always an MD5 of the serialized key.
* 3) If the is a v1 or v2 keyhash.
*/
RTI_INT32 isValid;
};
/*e \ingroup PRESInstanceHandleClass
Invalid instance handle
*/
#define PRESInstanceHandle_INITIALIZER { \
MIG_RTPS_KEY_HASH_DEFAULT, \
PRES_INSTANCE_HANDLE_INVALID_KEYHASH /* isValid */ }
extern PRESDllExport
int PRESInstanceHandle_compare(const struct PRESInstanceHandle *me,
const struct PRESInstanceHandle *handle);
extern PRESDllExport
void PRESInstanceHandle_copy(
struct PRESInstanceHandle *dst,
const struct PRESInstanceHandle *src);
extern PRESDllExport
RTIBool PRESInstanceHandle_isNil(const struct PRESInstanceHandle *me);
extern PRESDllExport
RTIBool PRESInstanceHandle_isProtected(const struct PRESInstanceHandle *me);
extern PRESDllExport
RTIBool PRESInstanceHandle_isV2(const struct PRESInstanceHandle *me);
extern PRESDllExport
RTI_INT32 PRESInstanceHandle_getInstanceHandleIsValidValue(
RTIBool useV2Encapsulation,
RTIBool useKeyProtection);
extern PRESDllExport
RTIBool PRESInstanceHandle_isInstanceHandleCompatible( \
const struct PRESInstanceHandle *me,
RTIBool useV2Encapsulation,
RTIBool useKeyProtection);
extern PRESDllExport
void PRESInstanceHandle_fromGuid(
struct PRESInstanceHandle *me,
const struct MIGRtpsGuid *guid);
struct PRESSampleRejectedStatus {
/*e
Total cumulative count of all samples rejected by the data reader.
*/
RTI_INT32 totalCount;
/*e
The incremental number of samples rejected since the last time the
listener was called or the status was read.
*/
RTI_INT32 totalCountChange;
/*e
Reason for rejecting the last sample rejected
*/
PRESSampleRejectedStatusKind lastReason;
/*e
Handle to the instance being updated by the last sample that was rejected.
*/
struct PRESInstanceHandle lastInstanceHandle;
};
struct PRESLivelinessChangedStatus {
/*e
The total count of currently active data writers that write the topic
the data reader readers
*/
RTI_INT32 activeCount;
/*e
The total count of currently inactive data writers that write the topic
the data reader reads
*/
RTI_INT32 inactiveCount;
/*e
The change in the active count since the last time the listener was
called or the status was read.
*/
RTI_INT32 activeCountChange;
/*e
The change in the inactive count since the last time the listeenr was
called or the status was read
*/
RTI_INT32 inactiveCountChange;
/*e
The total change in the active count since the last time the listener was
called or the status was read.
*/
RTI_INT32 totalActiveCountChange;
/*e
The total change in the inactive count since the last time the listener
was called or the status was read.
*/
RTI_INT32 totalInactiveCountChange;
/*e Last instance of the remote writer whose liveliness has changed */
struct PRESInstanceHandle lastInstanceHandle;
};
struct PRESRequestedDeadlineMissedStatus {
/*e
Total cumulative count of the deadlines detected for any instance
read by the data reader
*/
RTI_INT32 totalCount;
/*e
The incremental number of deadlines detected since the last time
the listener was called or the status was read.
*/
RTI_INT32 totalCountChange;
/*e
Handle to the last instance in the data reader for which a deadline was
detected
*/
struct PRESInstanceHandle lastInstanceHandle;
};
struct PRESOfferedDeadlineMissedStatus {
/*e
The total cumulative count of the number of times the data writer failed
to write within its offered deadline.
*/
RTI_INT32 totalCount;
/*e
The change in total count since the last time the listener was
called or the status was read.
*/
RTI_INT32 totalCountChange;
/*e
Handle to the last instance in the data writer for which an offered
deadline was missed.
*/
struct PRESInstanceHandle lastInstanceHandle;
};
struct PRESPublicationMatchStatus {
/*e
The total number of times the writer has matched a remote reader.
*/
RTI_INT32 totalCount;
/*e
The change in totalCount since the last time the listener was
called or the status was read.
*/
RTI_INT32 totalCountChange;
/*e
The number of remote readers with which the writer is currently matched.
*/
RTI_INT32 currentCount;
/*i
The highest number of remote readers with which the writer was matched.
*/
RTI_INT32 currentCountPeak;
/*e
The change in currentCount since the last time the listener was
called or the status was read.
*/
RTI_INT32 currentCountChange;
/*e last instance of last remote reader to trigger a status update. */
struct PRESInstanceHandle lastSubscriptionHandle;
};
struct PRESSubscriptionMatchStatus {
/*e
The total number of times the eader has matched a remote writer.
*/
RTI_INT32 totalCount;
/*e
The change in totalCount since the last time the listener was
called or the status was read.
*/
RTI_INT32 totalCountChange;
/*e
The number of remote writers with which the reader is currently matched.
*/
RTI_INT32 currentCount;
/*i
The highest number of remote readers with which the writer was matched.
*/
RTI_INT32 currentCountPeak;
/*e
The change in currentCount since the last time the listener was
called or the status was read.
*/
RTI_INT32 currentCountChange;
/*e instance handle of last remote writer to trigger a status update. */
struct PRESInstanceHandle lastPublicationHandle;
};
struct PRESServiceRequestAcceptedStatus {
/*e
The total number of times the writer has matched any requests.
*/
RTI_INT32 totalCount;
/*e
The change in totalCount since the last time the listener was
called or the status was read.
*/
RTI_INT32 totalCountChange;
/*e
The number of alive requests the writer currently matches
*/
RTI_INT32 currentCount;
/*e
The change in currentCount since the last time the listener was
called or the status was read.
*/
RTI_INT32 currentCountChange;
/*e last instance handle of the last request to trigger a status update. */
struct PRESInstanceHandle lastRequestHandle;
/*e The id of the service that the matching request belongs to */
RTI_INT32 lastServiceId;
};
struct PRESSampleInfo {
/*e
Sample state of sample
*/
RTI_UINT32 sampleState;
/*e
View state of instance
*/
RTI_UINT32 viewState;
/*e
Instance state of instance
*/
RTI_UINT32 instanceState;
/*e
Time when sample was sent
*/
struct PRESIeeeTime sourceTimestamp;
/*e
Handle to the sample instance
*/
struct PRESInstanceHandle instanceHandle;
/*e
* Handle to the writer that modified the instance. If proxy rules
* enforcement is enabled, then certain other GUID fields in the
* PRESSampleInfo must match the publicationHandle. These GUID fields are
* called "Proxy GUIDs" and are identified below.
*/
struct PRESInstanceHandle publicationHandle;
/*e
Disposed generation count of instance at sample reception
*/
RTI_INT32 disposedGenerationCount;
/*e
No writers generation count of instance at sample reception
*/
RTI_INT32 noWritersGenerationCount;
/*e
Sample rank of sample
*/
RTI_INT32 sampleRank;
/*e
Generation rank of sample
*/
RTI_INT32 generationRank;
/*e
Absolute generation rank of sample
*/
RTI_INT32 absoluteGenerationRank;
/*e
Denotes whether there is valid data
This has to match DDS_Boolean
*/
RTICdrBoolean hasData;
/*e
Time when sample was received
*/
struct PRESIeeeTime receptionTimestamp;
/*e
Sequence number
*/
struct REDASequenceNumber publicationSequenceNumber;
/*e
Sequence number
*/
struct REDASequenceNumber receptionSequenceNumber;
/*e
* Publication virtual guid. Not subject to proxy rules enforcement because
* this GUID is not serialized with the sample; it's only sent over
* discovery as part of the PRESPsEndpointParameter::virtualGuid.
*
* Note: This will be addressed in SEC-2866.
*/
struct PRESOctetGuid publicationVirtualGuid;
/*e
Publication virtual sequence number
*/
struct REDASequenceNumber publicationVirtualSequenceNumber;
/*e
* Original Publication virtual guid. Subject to proxy rules enforcement,
* so this GUID is one of the Proxy GUIDs.
*/
struct PRESOctetGuid originalPublicationVirtualGuid;
/*e
Original Publication virtual sequence number
*/
struct REDASequenceNumber originalPublicationVirtualSequenceNumber;
/*e
* Related Original Publication virtual guid. Not subject to proxy rules
* enforcement because this GUID doesn't indicate who is sending the
* sample.
*/
struct PRESOctetGuid relatedOriginalPublicationVirtualGuid;
/*e
Related Original Publication virtual sequence number
*/
struct REDASequenceNumber relatedOriginalPublicationVirtualSequenceNumber;
/*e
Sample flags
*/
PRESSampleFlag flag;
/*e
* The application logical data source associated with the sample. Subject
* to proxy rules enforcement, so this GUID is one of the Proxy GUIDs.
*/
struct PRESOctetGuid sourceGuid;
/*e
* The application logical data source that is related to the sample.
* Typically used in a request/reply pattern, where the related source GUID
* is associated with the original request's source (so that the requester
* can correlate the reply to its request). Not subject to proxy rules
* enforcement because this GUID doesn't indicate who is sending the sample.
*/
struct PRESOctetGuid relatedSourceGuid;
/*e
* The related reader GUID associated with the sample. Not
* subject to proxy rules enforcement because this GUID doesn't indicate
* who is sending the sample.
*/
struct PRESOctetGuid relatedSubscriptionGuid;
/*e
* The GUID of the TopicQuery that is related to the sample. Not
* subject to proxy rules enforcement because this GUID doesn't indicate
* who is sending the sample.
*/
struct PRESOctetGuid topicQueryGuid;
PRESSampleHash sampleHash;
struct PRESSampleSignature *signature;
/* Used by metp module, initialized as RTI_CDR_ENCAPSULATION_ID_INVALID */
RTIEncapsulationId encapsulationId;
/* Used by metp module */
struct REDASequenceNumber relatedEpoch;
/* This field is a pointer because it is an optional member in
* DDS_SampleInfo
*/
struct PRESCoherentSetInfo *coherentSetInfo;
};
#define PRESSampleInfo_INITIALIZER { \
PRES_SAMPLE_STATE_INVALID, /* sampleState */ \
PRES_VIEW_STATE_INVALID, /* viewState */ \
PRES_INSTANCE_STATE_INVALID, /* instanceState */ \
PRES_IEEE_TIME_INVALID, /* sourceTimestamp */ \
PRESInstanceHandle_INITIALIZER, /* instanceHandle */ \
PRESInstanceHandle_INITIALIZER, /* publicationHandle */ \
0, /* disposedGenerationCount */ \
0, /* noWritersGenerationCount */ \
0, /* sampleRank */ \
0, /* generationRank */ \
0, /* absoluteGenerationRank */ \
RTI_CDR_BOOLEAN_FALSE, /* hasData */ \
PRES_IEEE_TIME_INVALID, /* receptionTimestamp */ \
REDA_SEQUENCE_NUMBER_UNKNOWN, /* publicationSequenceNumber */ \
REDA_SEQUENCE_NUMBER_UNKNOWN, /* receptionSequenceNumber */ \
PRES_OCTET_GUID_ZERO, /* publicationVirtualGuid */ \
REDA_SEQUENCE_NUMBER_UNKNOWN, /* publicationVirtualSequenceNumber */ \
PRES_OCTET_GUID_ZERO, /* originalPublicationVirtualGuid */ \
REDA_SEQUENCE_NUMBER_UNKNOWN, /* originalPublicationVirtualSequenceNumber */ \
PRES_OCTET_GUID_ZERO, /* relatedOriginalPublicationVirtualGuid */ \
REDA_SEQUENCE_NUMBER_UNKNOWN, /* relatedOriginalPublicationVirtualSequenceNumber */ \
0, /* flag */ \
PRES_OCTET_GUID_ZERO, /* sourceGuid */ \
PRES_OCTET_GUID_ZERO, /* relatedSourceGuid */ \
PRES_OCTET_GUID_ZERO, /* relatedSubscriptionGuid */ \
PRES_OCTET_GUID_ZERO, /* topicQueryGuid */ \
PRES_SAMPLE_HASH_NIL, /* sampleHash */ \
NULL, /* signature */ \
RTI_CDR_ENCAPSULATION_ID_INVALID, /* encapsulationId */ \
REDA_SEQUENCE_NUMBER_ZERO, /* relatedEpoch */ \
NULL \
}
extern PRESDllExport
struct PRESSampleInfo *PRESSampleInfo_copy(
struct PRESSampleInfo *dst,
const struct PRESSampleInfo *src);
extern PRESDllExport
void PRESSampleInfo_finalize(struct PRESSampleInfo *self);
struct PRESAcknowledgmentInfo {
/*e
*/
struct PRESInstanceHandle subscriptionHandle;
/*e
*/
struct PRESSampleIdentity sampleIdentity;
/*e
*/
struct PRESCookie cookie;
/*e
*/
RTIBool validResponseData;
/*e
*/
struct PRESAckResponseData responseData;
};
struct PRESLoanedSampleInfo {
struct PRESSampleInfo sampleInfo;
void* userObject;
void* internalObject;
/* Reader queue providing this sample info. This is necessary in the case
* where we have multiple queues. For now this occurs with TopicQueries
* We need this field to return a sample to the right queue
*/
void *queue;
};
#define PRESLoanedSampleInfo_INITIALIZER { \
PRESSampleInfo_INITIALIZER, /* sampleInfo */ \
NULL, /* userObject */ \
NULL, /* internalObject */ \
NULL /* queue */ \
}
typedef void
(*PRESLoanedSampleInfoListenerUserObjectInitializeFnc)(
void** userObject, void* param);
typedef void
(*PRESLoanedSampleInfoListenerUserObjectFinalizeFnc)(
void** userObject, void* param);
struct PRESLoanedSampleInfoListener {
PRESLoanedSampleInfoListenerUserObjectInitializeFnc userObjectInitializeFnc;
void* userObjectInitializeParam;
PRESLoanedSampleInfoListenerUserObjectFinalizeFnc userObjectFinalizeFnc;
void* userObjectFinalizeParam;
};
extern PRESDllExport void
PRESParticipant_getInstanceHandle(
struct PRESParticipant *me,
struct PRESInstanceHandle *handle);
extern PRESDllExport
RTIBool PRESParticipant_getTopicPropertyByHandle(
struct PRESParticipant *me,
int *failReason,
struct PRESTopicProperty *property,
char *topicName, int topicMaxLength,
char *typeName, int typeMaxLength,
const struct PRESInstanceHandle *handle,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_ignoreTopicByHandle(
struct PRESParticipant *me,
int *failReason,
const struct PRESInstanceHandle *handle,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_getNextTopicType(
struct PRESParticipant *me,
int *failReason,
struct PRESTopicTypeIterator *iter,
struct PRESInstanceHandle *handle,
struct REDAWorker *worker);
extern PRESDllExport
int PRESParticipant_getTypeObjectCount(
struct PRESParticipant * me,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_dispatchBuiltinChannelSample(
struct PRESParticipant *me,
int *failReason,
const char *channelTopicName,
int serviceId,
void *userData,
const void *sample,
const struct PRESSampleInfo *sampleInfo,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_dispatchTopicQuery(
struct PRESParticipant *me,
int * failReason,
const struct PRESTopicQuerySelection * query,
const struct MIGRtpsGuid * topicQueryGuid,
const struct MIGRtpsGuid * relatedReaderGuid,
const struct PRESInstanceHandle *instanceHandle,
const RTI_UINT64 topicQueryChangeEpoch,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_cancelTopicQuery(
struct PRESParticipant *me,
int * failReason,
const struct MIGRtpsGuid * topicQueryGuid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESRemoteParticipant_isAuthenticationEnabled(
struct PRESParticipantParameter *parameter);
extern PRESDllExport
struct REDAFastBufferPool *PRESParticipant_createSequencePropertyBufferPool(
int maxPropertyLength,
int maxPropertyStringLength,
const struct REDAFastBufferPoolProperty *poolP);
extern PRESDllExport
void PRESParticipant_returnPropertyQosBuffer(
struct REDAFastBufferPool *pool,
struct PRESPropertyQosPolicy *propertyQos);
extern PRESDllExport
RTIBool PRESParticipant_printTable(
struct PRESParticipant *me,
const char *tableName,
struct REDAWorker *worker);
extern PRESDllExport
void PRESParticipantProperty_setPartitionBuffer(
struct PRESParticipantProperty *self,
char* buffer);
extern PRESDllExport void
PRESParticipantParameter_setPartitionBuffer(
struct PRESParticipantParameter *self,
char *buffer);
extern PRESDllExport int
PRESParticipant_getStringRegisteredParticipantDiscoverySnapshot(
struct PRESParticipant *localParticipant,
char *string,
size_t *stringSize,
struct REDAWorker *worker);
struct PRESParticipantGenericMessagePool {
/* Used to access to the security-specific return functions */
struct PRESParticipant *participant;
/* Participant generic message pool shared by all the messages */
struct REDAFastBufferPool *genericMessagePool;
/* DataHolder pool used to populate genericMessage's DataHolderSeq. */
struct REDAFastBufferPool *dataHolderPool;
};
#define PRES_PARTICIPANT_GENERIC_MESSAGE_POOL_DEFAULT { \
NULL /* participant */, \
NULL /* genericMessagePool */, \
NULL /* dataHolderPool */ \
}
struct PRESParticipantGenericMessageMetaData {
struct PRESOriginalWriterInfo messageIdentity;
struct PRESOriginalWriterInfo relatedMessageIdentity;
struct MIGRtpsGuid sourceEndpointKey;
struct MIGRtpsGuid destinationParticipantKey;
struct MIGRtpsGuid destinationEndpointKey;
};
#define PRES_PARTICIPANT_GENERIC_MESSAGE_META_DATA_DEFAULT { \
PRES_ORIGINAL_WRITER_INFO_UNKNOWN /* messageIdentity */, \
PRES_ORIGINAL_WRITER_INFO_UNKNOWN /* relatedMessageIdentity */, \
MIG_RTPS_GUID_UNKNOWN /* sourceEndpointKey */, \
MIG_RTPS_GUID_UNKNOWN /* destinationParticipantKey */, \
MIG_RTPS_GUID_UNKNOWN /* destinationEndpointKey */ \
}
extern PRESDllExport
void PRESParticipant_setBitInVendorBuiltinEndpointMaskFromObjectId(
struct PRESParticipant *me,
RTIBool *bitAlreadySet,
MIGRtpsObjectId oid,
RTIBool value);
extern PRESDllExport RTIBool PRESParticipantParameter_containsDestinationInList(
struct PRESParticipantParameter *me,
struct RTINetioDestinationList *destinationList,
struct REDAWorker *worker);
extern PRESDllExport
struct PRESPsService* PRESParticipant_getService(
const struct PRESParticipant *me);
extern PRESDllExport RTIBool PRESParticipant_authOnStatusChanged(
struct PRESParticipant *me,
const void *identityHandle,
PRESAuthStatusKind statusKind,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_accessOnStatusChanged(
struct PRESParticipant *me,
const void *permissionsHandle,
PRESAccessControlStatusKind statusKind,
struct REDAWorker *worker);
extern PRESDllExport RTIBool
PRESParticipant_getRemoteParticipantMetatrafficLocators(
const struct PRESParticipant *me,
struct PRESReducedLocatorQosPolicy *metatrafficMulticastLocators,
struct PRESLocatorQosPolicy *metatrafficUnicastLocators,
const MIGRtpsParticipantId *remoteParticipantId,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_isRemoteParticipantConfigComplete(
const struct PRESParticipant *me,
int *failReason,
const struct MIGRtpsGuid *guid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESParticipant_hasRtpsInitialPeer(const struct PRESParticipant *me);
extern PRESDllExport
void PRESParticipant_setHasRtpsInitialPeer(
struct PRESParticipant *me,
RTIBool hasRtpsInitialPeer);
struct PRESPsEndpointParameter;
extern PRESDllExport
RTIBool
PRESParticipant_shouldDelayBuiltinDiscSample(
struct PRESParticipant *participant,
RTIBool *delaySample,
const struct PRESPsEndpointParameter *remoteEndpointParameter,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESParticipant_postLocalCredentialEvent(
struct PRESParticipant *localParticipant,
PRESParticipantCredentialKind credentialKind,
PRESParticipantCredentialAction credentialAction,
const struct REDAWeakReference *remoteParticipantWR,
struct REDAWorker *worker);
#define PRESParticipant_postLocalCredentialValidationEvent( \
localParticipant__, \
credentialKind__, \
worker) \
PRESParticipant_postLocalCredentialEvent( \
localParticipant__, \
credentialKind__, \
PRES_PARTICIPANT_CREDENTIAL_ACTION_VALIDATE, \
NULL, /* remoteParticipantWR. */ \
worker)
#define PRESParticipant_postLocalCredentialPropagationEvent( \
localParticipant__, \
credentialKind__, \
remoteParticipantWR__, \
worker) \
PRESParticipant_postLocalCredentialEvent( \
localParticipant__, \
credentialKind__, \
PRES_PARTICIPANT_CREDENTIAL_ACTION_PROPAGATE, \
remoteParticipantWR__, \
worker)
extern PRESDllExport RTI_UINT64
PRESParticipant_getRejectedByLimitsParticipantCount(
const struct PRESParticipant *me);
#ifdef __cplusplus
} /* extern "C" */
#endif
#include "pres/pres_participant_impl.h"
#endif /* pres_participant_h */