Files
qt6-migration-pipeline/external/rti_connext_dds-7.7.0/include/ndds/pres/pres_psService.h
T
torsten ebfd3c8386 Adds RTI 6.6 Pro commercial lib
Entire-Checkpoint: 01M6ENHX3N0WDT7ZGK22ZJ8JD6
2026-11-02 17:40:05 +00:00

2900 lines
113 KiB
C

/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */
/*
* @(#)pres_psService.h generated by: makeheader Tue Apr 7 22:56:13 2026
*
* built from: psService.ifc
*/
#ifndef pres_psService_h
#define pres_psService_h
#ifndef osapi_type_h
#include "osapi/osapi_type.h"
#endif
#ifndef osapi_ntptime_h
#include "osapi/osapi_ntptime.h"
#endif
#ifndef reda_cursor_h
#include "reda/reda_cursor.h"
#endif
#ifndef reda_sequenceNumber_h
#include "reda/reda_sequenceNumber.h"
#endif
#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 writer_history_interface_h
#include "writer_history/writer_history_interface.h"
#endif
#ifndef pres_common_h
#include "pres/pres_common.h"
#endif
#ifndef pres_service_h
#include "pres/pres_service.h"
#endif
#ifndef pres_participant_h
#include "pres/pres_participant.h"
#endif
#ifndef pres_writerStatistics_h
#include "pres/pres_writerStatistics.h"
#endif
#ifndef pres_readerStatistics_h
#include "pres/pres_readerStatistics.h"
#endif
#ifndef cdr_typeCode_h
#include "cdr/cdr_typeCode.h"
#endif
#include "cdr/cdr_typeObject.h"
#ifndef osapi_md5_h
#include "osapi/osapi_md5.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define PRES_PS_LARGE_DATA_43_DATAWRITER_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_USE_43_LARGE_DATA_FORMAT
#define PRES_PS_LARGE_DATA_43_DATAREADER_PROPERTY PROPERTY_NAME_DDS_DATA_READER_PROTOCOL_USE_43_LARGE_DATA_FORMAT
#define PRES_DISABLE_REPAIR_PIGGYBACK_HEARTBEAT_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_DISABLE_REPAIR_PIGGYBACK_HEARTBEAT
#define PRES_DISABLE_PREEMPTIVE_HEARTBEAT_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_DISABLE_PREEMPTIVE_HEARTBEAT
#define PRES_DISABLE_PREEMPTIVE_NACK_PROPERTY PROPERTY_NAME_DDS_DATA_READER_PROTOCOL_DISABLE_PREEMPTIVE_NACK
#define PRES_PS_RTPS_PROTOCOL_OVERHEAD_PARTICIPANT_PROPERTY PROPERTY_NAME_DDS_PARTICIPANT_PROTOCOL_RTPS_OVERHEAD
#define PRES_PS_RTPS_PROTOCOL_OVERHEAD_PARTICIPANT_ANONYMOUS_PROPERTY PROPERTY_NAME_DDS_PARTICIPANT_PROTOCOL_RTPS_OVERHEAD_ANONYMOUS
#define PRES_PS_DYNAMIC_SEND_WINDOW_RATIO_THRESHOLD_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_DYNAMIC_SEND_WINDOW_RATIO_THRESHOLD
#define PRES_PS_FORCE_FILTERED_LIVELINESS_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_FORCE_FILTERED_LIVELINESS
#define PRES_PS_RTPS_PROTOCOL_MAX_RECEIVE_WINDOW_SIZE_PARTICIPANT_PROPERTY "dds.participant.protocol.max_receive_window_size"
#define PRES_PS_RTPS_PROTOCOL_RECEIVE_WINDOW_SIZE_DATAREADER_PROPERTY PROPERTY_NAME_DDS_DATA_READER_PROTOCOL_RECEIVE_WINDOW_SIZE
#define PRES_PS_RTPS_PROTOCOL_OUTSTANDING_NACK_DATAWRITER_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_MAX_INFLIGHT_SAMPLE_COUNT
#define PRES_PS_RTPS_PROTOCOL_RTT_SEC_DATAREADER_PROPERTY PROPERTY_NAME_DDS_DATA_READER_PROTOCOL_ROUND_TRIP_TIME_SEC
#define PRES_PS_RTPS_PROTOCOL_RTT_NANOSEC_DATAREADER_PROPERTY PROPERTY_NAME_DDS_DATA_READER_PROTOCOL_ROUND_TRIP_TIME_NANOSEC
#define PRES_PS_TAKE_SNAPSHOT_DATAREADER_PROPERTY PROPERTY_NAME_DDS_DATA_READER_TAKE_SNAPSHOT
#define PRES_READER_DELEGATE_RELIABILITY PROPERTY_NAME_DDS_DATA_READER_RELIABILITY_DELEGATE_RELIABILITY
#define PRES_WRITER_DELEGATE_RELIABILITY PROPERTY_NAME_DDS_DATA_WRITER_RELIABILITY_DELEGATE_RELIABILITY
#define PRES_WRITER_CRYPTOGRAPHY_TAINT_DATA_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_CRYPTOGRAPHY_TAINT_DATA
#define PRES_READER_COMPUTE_SAMPLE_HASH_PROPERTY PROPERTY_NAME_DDS_DATA_READER_COMPUTE_SAMPLE_HASH
#define PRES_WRITER_COMPUTE_SAMPLE_SIGNATURE_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_COMPUTE_SAMPLE_SIGNATURE
/* This property must be set to 1 if the user wants to deserialize the signature
* (MIG_RTPS_PID_SAMPLE_SIGNATURE) of incoming samples.
*
* Setting the property to 0 will make the reader to ignore the signature. This
* will also save memory. When the property is set to 1 we have to allocate
* PRESSampleSignature per sample.
*/
#define PRES_READER_DESERIALIZE_SAMPLE_SIGNATURE_PROPERTY \
PROPERTY_NAME_DDS_DATA_READER_DESERIALIZE_SAMPLE_SIGNATURE
#define PRES_PS_RTPS_UNPROTECTED_CHANNELS_MAX_SAMPLE_LENGTH PROPERTY_NAME_DDS_DATA_READER_UNPROTECTED_CHANNELS_MAX_SAMPLE_LENGTH
#define PRES_PS_SERVICE_MAX_OBJECT_KEY 0x00FFFFFF
/*
* Group entities (Publishers and Subscribers) have a lower maximum object key
* than other entities. Their objectIds are used to also calculate the object
* IDs of group builtin entities. Secure builtin entities are identified by
* setting 0xFF in the top byte of the object key. This means that those
* bytes must be reserved.
*/
#define PRES_PS_SERVICE_MAX_GROUP_OBJECT_KEY 0x00FFFF
/*
* Define the mapping from object kind to index in the object key generator.
*/
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_CST_WRITER (0)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_PUBLICATION (1)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_SUBSCRIPTION (2)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_CST_READER (3)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_USER_CST_WRITER (4)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_USER_PUBLICATION (5)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_USER_SUBSCRIPTION (6)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_USER_CST_READER (7)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_META_CST_WRITER (8)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_META_PUBLICATION (9)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_META_SUBSCRIPTION (10)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_META_CST_READER (11)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_META_CST_WRITER (12)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_META_PUBLICATION (13)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_META_SUBSCRIPTION (14)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_META_CST_READER (15)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_VIRTUAL_SUBSCRIPTION (16)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_VIRTUAL_CST_READER (17)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_WRITER_GROUP (18)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_READER_GROUP (19)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_USER_VIRTUAL_READER_GROUP (20)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_USER_WRITER_GROUP (21)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_USER_READER_GROUP (22)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_META_WRITER_GROUP (23)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_NORMAL_META_READER_GROUP (24)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_META_WRITER_GROUP (25)
#define PRES_OBJECT_KEY_GENERATOR_INDEX_RESERVED_META_READER_GROUP (26)
/* This property can take three values:
* FULLY_ACK
* PROTOCOL
* APP_ACK
*
* The property control the criteria under which samples are considered acked
* wrt the wait_for_acknowledgments API
*/
#define PRES_WRITER_WAIT_FOR_ACK_MODE PROPERTY_NAME_DDS_DATA_WRITER_ACK_MODE_IN_WAIT_FOR_ACKNOWLEDGMENTS
/* This is a property that is used
* for test purposes in order to introduce an
* artificial delay (in seconds) after a timeout
* error in the waitForAcknowledgments
* operation.
*
* The delay is introduced after the take
* operation on the semaphore returns a TIMEOUT error
* and before we take the writer EA again.
*
* The idea is to facilitate the testing of a scenario
* in which a timeout error occurs an immediately
* after the writer acknowledges the samples.
*
* This situation could cause the next call to
* waitForAcknowledgments to unblock even if
* there are samples that have not been
* acked yet.
*/
#define PRES_WRITER_TIMEOUT_DELAY_IN_WAIT_FOR_ACK PROPERTY_NAME_DDS_DATA_WRITER_TIMOUT_DELAY_IN_WAIT_FOR_ACKNOWLEDGMENTS
#define PRES_PS_KEY_ONLY_FILTER_OPTIMIZATION_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_ENABLE_KEY_ONLY_FILTER_OPTIMIZATION
#define PRES_PS_WRITER_SIDE_FILTER_OPTIMIZATION_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_ENABLE_FILTER_OPTIMIZATION
#define PRES_PS_WRITER_TEST_FILTER_ON_SERIALIZED_ONLY_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_TEST_FILTER_ON_SERIALIZED_ONLY
#define PRES_PS_WRITER_TEST_ENDPOINT_LINK_EVENT_DELAY_PROPERTY PROPERTY_NAME_DDS_DATA_WRITER_TEST_ENDPOINT_LINK_EVENT_DELAY
#define PRES_READER_VIRTUAL_OWNERSHIP_PROPERTY PROPERTY_NAME_DDS_DATA_READER_VIRTUAL_OWNERSHIP
#define PRES_READER_QUERY_CONDITION_PASS_NOT_ALIVE_SAMPLES_PROPERTY PROPERTY_NAME_DDS_DATA_READER_QUERYCONDITION_ALWAYS_PASS_NOT_ALIVE_SAMPLES
#define PRES_READER_TEST_FILTER_ON_SERIALIZED_ONLY_PROPERTY PROPERTY_NAME_DDS_DATA_READER_TEST_FILTER_ON_SERIALIZED_ONLY
#define PRES_READER_ISOLATED_PROPERTY PROPERTY_NAME_DDS_DATA_READER_IS_ISOLATED
#define PRES_PS_TYPE_CONSISTENCY_IGNORE_MEMBER_NAMES_PROPERTY \
PROPERTY_NAME_DDS_TYPE_CONSISTENCY_IGNORE_MEMBER_NAMES
#define PRES_PS_TYPE_CONSISTENCY_IGNORE_SEQUENCE_BOUNDS_PROPERTY \
PROPERTY_NAME_DDS_TYPE_CONSISTENCY_IGNORE_SEQUENCE_BOUNDS
#define PRES_PS_AUTO_THROTTLE_ENABLE_PROPERTY \
PROPERTY_NAME_DDS_DOMAIN_PARTICIPANT_AUTO_THROTTLE_ENABLE
/*e This property enables auto throttle on a DataWriter */
#define PRES_PS_WRITER_AUTO_THROTTLE_ENABLED_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_ENABLE
/*e When auto throttle is enabled on a DataWriter, this property
* defines the period in number of samples at which the spin is updated */
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_UPDATE_SAMPLE_COUNT_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SPIN_UPDATE_SAMPLE_COUNT
/*e When auto throttle is enabled on a DataWriter, this property
* defines the spin increment in microseconds*/
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_INCREMENT_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SPIN_INCREMENT
/*e When auto throttle is enabled on a DataWriter, this property
* defines the spin decrement in microseconds*/
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_DECREMENT_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SPIN_DECREMENT
/*e When auto throttle is enabled on a DataWriter, this property
* defines the threshold below which the auto throttle algorithm
* will start decreasing de spin*/
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_LOW_THRESHOLD_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SPIN_LOW_THRESHOLD
/*e When auto throttle is enabled on a DataWriter, this property
* defines the threshold above which the auto throttle algorithm
* will start increasing de spin*/
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_HIGH_THRESHOLD_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SPIN_HIGH_THRESHOLD
/*e This property enables the slow throughput detection on a DataWriter */
#define PRES_PS_WRITER_AUTO_THROTTLE_SLOW_THROUGHPUT_DETECTION_ENABLE_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SLOW_THROUGHPUT_DETECTION_ENABLE
/*e When the slow throughput detection is enabled on a DataWriter (as well as
* the auto throttle), this property defines the minimum increment of time between
* write calls (in microseconds) that can be detected */
#define PRES_PS_WRITER_AUTO_THROTTLE_SLOW_THROUGHPUT_DETECTION_DELTA_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SLOW_THROUGHPUT_DETECTION_DELTA
/*e When auto throttle is enabled on a DataWriter, this property
* defines the max time that it can spin within a single write call*/
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_MAX_SPIN_TIME_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_MAX_SPIN_TIME
/*e When auto throttle is enabled on a DataWriter, this property
* defines the spin decrease factor*/
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_FACTOR_DECREMENT_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_AUTO_THROTTLE_SPIN_FACTOR_DECREMENT
/*e This property chooses the push pull ratio algorithm to resize
* the send window*/
#define PRES_PS_WRITER_PROTOCOL_RESIZE_SEND_WINDOW_PUSH_PULL_RATIO_PROPERTY_NAME \
PROPERTY_NAME_DDS_DATA_WRITER_PROTOCOL_RESIZE_SEND_WINDOW_BASED_ON_PUSH_PULL_RATIO
#define PRES_PS_WRITER_AUTOPURGE_VIRTUAL_GUID \
PROPERTY_NAME_DDS_DATA_WRITER_AUTOPURGE_VIRTUAL_GUID
#define PRES_PS_WRITER_AUTO_THROTTLE_ENABLED_PROPERTY_DEFAULT \
RTI_FALSE
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_UPDATE_SAMPLE_COUNT_PROPERTY_DEFAULT \
1
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_INCREMENT_PROPERTY_DEFAULT \
5
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_DECREMENT_PROPERTY_DEFAULT \
1
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_LOW_THRESHOLD_PROPERTY_DEFAULT \
20
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_HIGH_THRESHOLD_PROPERTY_DEFAULT \
40
#define PRES_PS_WRITER_AUTO_THROTTLE_SLOW_THROUGHPUT_DETECTION_ENABLE_PROPERTY_DEFAULT \
RTI_TRUE
#define PRES_PS_WRITER_AUTO_THROTTLE_SLOW_THROUGHPUT_DETECTION_DELTA_PROPERTY_DEFAULT \
0
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_MAX_SPIN_TIME_PROPERTY_DEFAULT \
1000 /* in microseconds */
#define PRES_PS_WRITER_AUTO_THROTTLE_SPIN_FACTOR_DECREMENT_PROPERTY_DEFAULT \
70
#define PRES_PS_UNICAST_LOCALPORT_COUNT_MAX (2)
/*e \ingroup PRESPsServiceModule
Upper bound limit for partitionMaximumCumulativeLength in PsServiceProperty
*/
#define PRES_PS_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_LIMIT \
PRES_PARTICIPANT_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_LIMIT
/*e \ingroup PRESPsServiceModule
Upper bound limit for endpointGroupMaximumCumulativeLength in PsServiceProperty
*/
#define PRES_PS_ENDPOINT_GROUP_MAXIMUM_CUMULATIVE_LENGTH_LIMIT (65535)
#define PRES_PS_ENDPOINT_DISCOVERY_TYPE_OBJECT_LB_SERIALIZATION_THRESHOLD_UNLIMITED (-1)
#define PRES_PS_ENDPOINT_DISCOVERY_TYPE_OBJECT_LB_SERIALIZATION_THRESHOLD_DEFAULT (0)
#define PRES_READER_ACCEPT_WRITER_REMOVED_BATCH_SAMPLES_DEFAULT RTI_FALSE
#define PRES_READER_LOG_WRITER_REMOVED_BATCH_SAMPLES_DEFAULT RTI_FALSE
#define PRESPsWriter PRESLocalEndpoint
#define PRESPsReader PRESLocalEndpoint
struct PRESPsEndpointParameter {
/*e immutable */
struct PRESLocatorDerivableQosPolicy unicastLocator;
/*i
* DDS and Presentation require this string to be immutable, the
* former because it is initialized with a string received through
* a public API and the latter because it provides #defines for
* initializing them with static data. Discovery, however, needs
* it to be mutable (although it only modifies strings that it
* created itself). See bug #7800 for mroe discussion.
*/
/*e immutable. The topic of the endpoint. It may be ignored if topic is
provided from other source, e.g., topicTypeWR. */
char *topic;
/*e immutable. The type of the endpoint. It may be ignored if typeName is
provided from other source, e.g., topicTypeWR. */
char *typeName;
/*e immutable */
MIGRtpsObjectId groupOid;
/*e immutable. The Type Code of the endpoint
*/
struct RTICdrTypeCode * typeCode;
/*e immutable. The TypeObjectV1 of the endpoint
*/
struct RTICdrTypeObject * typeObjectV1;
/*e immutable. MD5 of the TypeObjectV1
*/
RTICdrOctet typeObjectV1Md5[RTI_OSAPI_MD5_DIGEST_SIZE];
/*e immutable. See struct PRESDurabilityQosPolicy */
struct PRESDurabilityQosPolicy durabilityQosPolicy;
/*e immutable. The reliability offered by the endpoint. */
struct PRESReliabilityQosPolicy reliabilityQosPolicy;
/*e immutable. Queue size. (send queue for writer, recv queue for reader) */
int queueSize;
/*e immutable. See struct PRESLivelinessQosPolicy */
struct PRESLivelinessQosPolicy livelinessQosPolicy;
/*e immutable. See struct PRESOwnershipQosPolicy */
struct PRESOwnershipQosPolicy ownershipQosPolicy;
/*e immutable. See struct PRESPresentationQosPolicy
Caller doesn't need to fillup this field. We get this from
group property automatically
*/
struct PRESPresentationQosPolicy presentationQosPolicy;
/*e immutable. See struct PRESDestinationOrderQosPolicy */
struct PRESDestinationOrderQosPolicy destinationOrderQosPolicy;
/*e mutable. See struct PRESDeadlineQosPolicy */
struct PRESDeadlineQosPolicy deadlineQosPolicy;
/*e mutable. See struct PRESLatencyBudgetQosPolicy */
struct PRESLatencyBudgetQosPolicy latencyBudgetQosPolicy;
/*e mutable. See struct PRESUserDataQosPolicy */
struct PRESUserDataQosPolicy userDataQosPolicy;
/*e mutable. See struct PRESGroupDataQosPolicy */
struct PRESGroupDataQosPolicy groupDataQosPolicy;
/*e mutable. See struct PRESTopicDataQosPolicy */
struct PRESTopicDataQosPolicy topicDataQosPolicy;
/*e mutable. See struct PRESPartitionQosPolicy */
struct PRESPartitionQosPolicy partitionQosPolicy;
/*e mutable. See struct PRESPropertyQosPolicy */
struct PRESPropertyQosPolicy propertyQosPolicy;
/*e immutable. See struct PRESDataTagQosPolicy */
PRESDataTagQosPolicy dataTagQosPolicy;
/*e immutable. See struct PRESDataRepresentationQosPolicy */
struct PRESDataRepresentationQosPolicy dataRepresentationQosPolicy;
/*e immutable. Virtual GUID */
struct MIGRtpsGuid virtualGuid;
/*e immutable. Service Kind */
struct PRESServiceQosPolicy serviceQosPolicy;
/*e immutable */
MIGRtpsProtocolVersion protocolVersion;
/*e immutable */
MIGRtpsVendorId vendorId;
/*e immutable */
struct PRESProductVersion productVersion;
/*e mutable */
RTIBool isIncompatible;
/*e immutable */
RTIBool disableAcks;
/*e immutable */
struct PRESEntityNameQosPolicy name;
/* immutable */
struct PRESEndpointSecurityProtectionInfo securityProtectionInfo;
/* immutable */
PRESEndpointRtiSecurityAttributesBitmask rtiSecurityAttributes;
/* immutable */
struct PRESEndpointSecurityAlgorithmInfo securityAlgorithmInfo;
/*
* immutable
* REQREPLY-166: This field is used to indicate the related DR created as
* a part of an RPC (Requester or Replier) endpoint pair. Each pair contains
* a DR and a DW. This field helps to eliminate a discovery race condition
* and completing discovery for the pair as a whole.
*/
struct MIGRtpsGuid relatedEntityGuid;
/* immutable. The list of topic alias names of the reader */
struct PRESSequenceString topicAliasNames;
/* immutable. The list of type alias names of the reader */
struct PRESSequenceString typeAliasNames;
/*
* immutable. TypeObjectV2: Contains both the complete and minimal type
* identifier. This is a pointer because we can't include the generated
* type DDS_XTypes_TypeInformation from xcdr/xcdr_typeObjectV2.h in this
* public header file.
*/
struct DDS_XTypes_TypeInformation *typeInformation;
/*
* Used to store information about the features that are supported by the
* type this endpoint uses.
* For example, a type can support zero copy and/or flat data.
* Prior to TypeObjectV2, this information was stored in the TypeObjectV1
* object.
*/
RTI_UINT16 typeProperties;
/*
* RECORD-1574
* Stores the most recent source timestamp from a builtin topic sample for
* this endpoint.
*
* This timestamp is used to populate the builtin reader sample that is
* provided to the user once type information has been resolved.
*
* We can't provide an INVALID timestamp because that breaks replay services
* 'replay by source timestamp' feature.
*/
struct RTINtpTime mostRecentSrcTimestamp;
/*e immutable. Source GUID prefix. This is the one coming from the RTPS
* header. Its correctness is enforced by the Security Plugins. It is cached
* here so that we can verify (if proxy is not allowed) that the prefixes in
* the endpoint and virtual GUIDs (PID_ENTITY_VIRTUAL_GUID,
* PID_ENDPOINT_GUID) match the source GUID.
*/
struct MIGRtpsGuidPrefix srcGuidPrefix;
};
struct PRESPsSubscriptionParameter {
/*
* Parent type containing fields in both subscription and publication
* data
*/
struct PRESPsEndpointParameter parent;
/*e immutable */
struct RTINetioLocator multicastLocator;
/*e immutable */
RTIBool expectsInlineQos;
/*e mutable. The minimum separation between two issues. Must >= 0 */
struct RTINtpTime minimumSeparation;
/*e mutable. See struct PRESContentFilterProperty */
struct PRESContentFilterProperty contentFilterProperty;
/*e mutable */
RTIBool expectsVirtualHB;
/*e immutable? See CXTYPES-10 */
struct PRESTypeConsistencyEnforcementQosPolicy typeConsistency;
/*e mutable Epoch to indicate the age of the remote reader property. Used to
synchronize discovery information with the built-in ServiceRequest channel */
RTI_INT64 _propertyChangeEpoch;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_TOPIC_DEFAULT NULL
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_TYPE_NAME_DEFAULT NULL
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_DURABILITY_QOS_POLICY_DEFAULT \
PRES_DURABILITY_QOS_POLICY_DEFAULT
/*e \ingroup PRESPsServiceModule */
/* clang-format off */
#define PRES_PS_SUBSCRIPTION_PARAMETER_RELIABILITY_QOS_POLICY_DEFAULT \
{ \
PRES_BEST_EFFORT_RELIABILITY_QOS, \
{0, 429496729}, /* 100ms maxBlockingTime */ \
PRES_PROTOCOL_ACKNOWLEDGMENT_MODE, \
PRES_NO_RECOVER_INSTANCE_STATE_CONSISTENCY, \
RTI_FALSE /* exactReliabilityKindMatch */ \
}
/* clang-format on */
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_RECV_QUEUE_SIZE_DEFAULT (1)
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_MINIMUM_SEPARATION_DEFAULT {0, 0}
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_LIVELINESS_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_MAX, /* leaseDuration */ \
PRES_AUTOMATIC_LIVELINESS_QOS, /* kind */ \
3 /* assertionsPerLeaseDuration */ }
#define PRES_PS_SUBSCRIPTION_PARAMETER_OWNERSHIP_QOS_POLICY_DEFAULT \
{PRES_SHARED_OWNERSHIP_QOS}
#define PRES_PS_SUBSCRIPTION_PARAMETER_PRESENTATION_QOS_POLICY_DEFAULT \
{PRES_INSTANCE_PRESENTATION_QOS, \
RTI_FALSE, /* coherent_access */ \
RTI_FALSE, /* ordered_access */ \
RTI_TRUE /* dropIncompleteCoherentSet */ \
}
#define PRES_PS_SUBSCRIPTION_PARAMETER_DESTINATION_ORDER_QOS_POLICY_DEFAULT \
{PRES_BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, \
PRES_INSTANCE_SCOPE_DESTINATIONORDER_QOS, \
{30, 0}}
#define PRES_PS_SUBSCRIPTION_PARAMETER_DEADLINE_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_MAX}
#define PRES_PS_SUBSCRIPTION_PARAMETER_LATENCY_BUDGET_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_ZERO}
#define PRES_PS_SUBSCRIPTION_PARAMETER_USER_DATA_QOS_POLICY_DEFAULT \
{PRESSequenceString_INITIALIZER}
#define PRES_PS_SUBSCRIPTION_PARAMETER_TOPIC_DATA_QOS_POLICY_DEFAULT \
{PRESSequenceString_INITIALIZER}
#define PRES_PS_SUBSCRIPTION_PARAMETER_GROUP_DATA_QOS_POLICY_DEFAULT \
{PRESSequenceString_INITIALIZER}
#define PRES_PS_SUBSCRIPTION_PARAMETER_PARTITION_QOS_POLICY_DEFAULT \
{PRESSequenceString_INITIALIZER}
#define PRES_PS_SUBSCRIPTION_PARAMETER_CONTENT_FILTER_PROPERTY_DEFAULT \
PRES_CONTENT_FILTER_PROPERTY_DEFAULT
#define PRES_PS_SUBSCRIPTION_PARAMETER_PROPERTY_QOS_POLICY_DEFAULT \
PRES_PROPERTY_QOS_POLICY_DEFAULT
#define PRES_PS_SUBSCRIPTION_PARAMETER_DATA_TAG_QOS_POLICY_DEFAULT \
PRES_DATA_TAG_QOS_POLICY_DEFAULT
#define PRES_PS_SUBSCRIPTION_PARAMETER_DATA_REPRESENTATION_QOS_POLICY_DEFAULT \
PRES_DATA_REPRESENTATION_QOS_POLICY_DEFAULT
#define PRES_PS_SUBSCRIPTION_PARAMETER_SERVICE_QOS_POLICY_DEFAULT \
{PRES_NO_SERVICE_QOS}
#define PRES_PS_SUBSCRIPTION_PARAMETER_TYPE_OBJECT_MD5_DEFAULT \
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SUBSCRIPTION_PARAMETER_CHANGE_EPOCH_UNKNOWN ((RTI_INT64) 0)
#define PRES_PS_SUBSCRIPTION_ENDPOINT_PARAMETER_DEFAULT { \
PRES_LOCATOR_DERIVABLE_QOS_POLICY_DEFAULT, /* unicastLocator */ \
PRES_PS_SUBSCRIPTION_PARAMETER_TOPIC_DEFAULT, /* topic */ \
PRES_PS_SUBSCRIPTION_PARAMETER_TYPE_NAME_DEFAULT, /* typeName */ \
MIG_RTPS_OBJECT_ID_UNKNOWN, /* groupOid */ \
NULL, /* typeCode */ \
NULL, /* typeObjectV1 */ \
PRES_PS_SUBSCRIPTION_PARAMETER_TYPE_OBJECT_MD5_DEFAULT, /* typeObjectV1Md5 */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DURABILITY_QOS_POLICY_DEFAULT, /* durabilityQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_RELIABILITY_QOS_POLICY_DEFAULT, /* reliabilityQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_RECV_QUEUE_SIZE_DEFAULT, /* queueSize */ \
PRES_PS_SUBSCRIPTION_PARAMETER_LIVELINESS_QOS_POLICY_DEFAULT, /* livelinessQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_OWNERSHIP_QOS_POLICY_DEFAULT , /* ownerShipQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_PRESENTATION_QOS_POLICY_DEFAULT, /* presentationQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DESTINATION_ORDER_QOS_POLICY_DEFAULT, /* destinationOrderQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DEADLINE_QOS_POLICY_DEFAULT, /* deadlineQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_LATENCY_BUDGET_QOS_POLICY_DEFAULT, /* latencyBudgetQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_USER_DATA_QOS_POLICY_DEFAULT, /* userDataQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_GROUP_DATA_QOS_POLICY_DEFAULT, /* groupDataQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_TOPIC_DATA_QOS_POLICY_DEFAULT, /* topicDataQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_PARTITION_QOS_POLICY_DEFAULT, /* partitionQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_PROPERTY_QOS_POLICY_DEFAULT, /* propertyQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DATA_TAG_QOS_POLICY_DEFAULT, /* dataTagQosPolicy */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DATA_REPRESENTATION_QOS_POLICY_DEFAULT, /* dataRepresentationQosPolicy */ \
MIG_RTPS_GUID_UNKNOWN, /* virtualGuid */ \
PRES_PS_SUBSCRIPTION_PARAMETER_SERVICE_QOS_POLICY_DEFAULT, /* serviceQosPolicy */ \
MIG_RTPS_PROTOCOL_VERSION, /* protocolVersion */ \
MIG_RTPS_VENDOR_ID_UNKNOWN, /* vendorId */ \
PRESProductVersion_INITIALIZER, /* productVersion */ \
RTI_FALSE, /* isIncompatible */ \
RTI_FALSE, /* disableAcks */ \
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT, /* name */ \
PRESEndpointSecurityProtectionInfo_INITIALIZER, /* securityProtectionInfo */ \
PRES_ENDPOINT_RTI_SECURITY_ATTRIBUTES_BITMASK_DEFAULT, /* rtiSecurityAttributes */ \
PRESEndpointSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* securityAlgorithmInfo */ \
MIG_RTPS_GUID_UNKNOWN, /* relatedEntityGuid */ \
PRESSequenceString_INITIALIZER, /* topicAliasNames */ \
PRESSequenceString_INITIALIZER, /* typeAliasNames */ \
NULL, /* typeInformation */ \
0, /* typeProperties */ \
RTI_NTP_TIME_INVALID, /* mostRecentSrcTimestamp */ \
MIG_RTPS_GUID_PREFIX_UNKNOWN /* srcGuidPrefix */ \
}
#define PRES_PS_SUBSCRIPTION_PARAMETER_DEFAULT { \
PRES_PS_SUBSCRIPTION_ENDPOINT_PARAMETER_DEFAULT, /* parent */ \
RTI_NETIO_LOCATOR_INVALID, /* multicastLocator */ \
RTI_FALSE, /* expectsInlineQos */ \
PRES_PS_SUBSCRIPTION_PARAMETER_MINIMUM_SEPARATION_DEFAULT, \
PRES_PS_SUBSCRIPTION_PARAMETER_CONTENT_FILTER_PROPERTY_DEFAULT, \
RTI_FALSE, /* expectsVirtualHB */ \
PRES_TYPE_CONSISTENCY_ENFORCEMENT_QOS_DEFAULT, \
PRES_PS_SUBSCRIPTION_PARAMETER_CHANGE_EPOCH_UNKNOWN \
}
struct PRESBuiltinTopicSubscriptionData {
/*e GUID of the participant of the data reader.
*/
struct MIGRtpsGuid participantGuid;
/*e GUID of the data reader itself.
*
* In most cases, the data comes from the DomainParticipant identified by
* this GUID prefix, but it may be proxied by a different DomainParticipant.
* The GUID prefix here represents the DomainParticipant that owns the
* DataReader (prefix serialized as part of the DISC_RTPS_PID_ENDPOINT_GUID
* parameter). The GUID prefix of the physical source (the proxy
* DomainParticipant, with a GUID prefix found in the RTPS header) is
* cached in parameter->parent.srcGuidPrefix. The distinction is important
* when enforcing authenticity, as the physical and logical endpoint GUID
* prefixes must match, unless proxying is allowed for the participant
* sending the subscription data.
*/
struct MIGRtpsGuid guid;
/*e Parameters of the data reader.
*/
struct PRESPsSubscriptionParameter *parameter;
};
#define PRES_BUILTIN_TOPIC_SUBSCRIPTION_DATA_INITIALIZE \
{ \
MIG_RTPS_GUID_UNKNOWN, /* participantGuid */ \
MIG_RTPS_GUID_UNKNOWN, /* guid */ \
NULL /* parameter */ \
}
struct PRESPsPublicationParameter {
/*
* Parent type containing fields in both subscription and publication
* data
*/
struct PRESPsEndpointParameter parent;
/*e immutable. Whether the writer expects ACK. Deprecated. */
RTIBool expectsAck;
/*e immutable. The max serialized size of a sample. Must >= 0 */
/*i This value will be set as the output of the getMaxSizeSerializedFnc in
the type plugin */
int maxSampleSerializedSize;
/*e mutable. The strength of the writer. Must >= 0. See
struct PRESOwnershipStrengthQosPolicy */
RTI_INT32 strength;
/*e mutable. The persistence of the writer. */
/*i For DDS, leave it as default */
struct RTINtpTime persistence;
/*e immutable. See struct PRESDurabilityServiceQosPolicy */
struct PRESDurabilityServiceQosPolicy durabilityServiceQosPolicy;
/*e mutable. See struct PRESLifespanQosPolicy */
struct PRESLifespanQosPolicy lifespanQosPolicy;
/*e immutable. See struct PRESLocatorFilterQosProperty */
struct PRESLocatorFilterQosProperty locatorFilterQosProperty;
/*e immutable. Group Virtual GUID. Only used with GROUP access */
struct MIGRtpsGuid groupVirtualGuid;
/*e immutable */
struct PRESTopicQueryPublicationProperty topicQueryPublicationProperty;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_TOPIC_DEFAULT NULL
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_TYPE_NAME_DEFAULT NULL
/*e \ingroup PRESPsServiceModule */
/* clang-format off */
#define PRES_PS_PUBLICATION_PARAMETER_RELIABILITY_QOS_POLICY_DEFAULT \
{ \
PRES_BEST_EFFORT_RELIABILITY_QOS, \
{0, 429496729}, /* 100ms maxBlockingTime */ \
PRES_PROTOCOL_ACKNOWLEDGMENT_MODE, \
PRES_NO_RECOVER_INSTANCE_STATE_CONSISTENCY, \
RTI_FALSE \
}
/* clang-format on */
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_EXPECTS_ACK_DEFAULT (RTI_TRUE)
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_SEND_QUEUE_SIZE_DEFAULT (1)
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_MAX_SAMPLE_SERIALIZED_SIZE_DEFAULT (0)
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_STRENGTH_DEFAULT (0)
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_PERSISTENCE_DEFAULT {0, 0}
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_PUBLICATION_PARAMETER_LIVELINESS_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_MAX, /* leaseDuration */ \
PRES_AUTOMATIC_LIVELINESS_QOS, /* kind */ \
3 /* assertionsPerLeaseDuration */ }
#define PRES_PS_PUBLICATION_PARAMETER_DURABILITY_QOS_POLICY_DEFAULT \
PRES_DURABILITY_QOS_POLICY_DEFAULT
#define PRES_PS_PUBLICATION_PARAMETER_DURABILITY_SERVICE_QOS_POLICY_DEFAULT { \
RTI_NTP_TIME_ZERO, /* serviceCleanupDelay */ \
PRES_HISTORY_QOS_POLICY_DEFAULT, /* history */ \
{ /* resourceLimits */ \
REDA_FAST_BUFFER_POOL_GROWTH_PROPERTY_DEFAULT, /* sampleCount */ \
REDA_FAST_BUFFER_POOL_GROWTH_PROPERTY_DEFAULT, /* instanceCount */ \
REDA_FAST_BUFFER_POOL_UNLIMITED, /* maxSamplesPerInstance */ \
1 /* instanceHashBuckets */ \
} \
}
#define PRES_PS_PUBLICATION_PARAMETER_OWNERSHIP_QOS_POLICY_DEFAULT \
{PRES_SHARED_OWNERSHIP_QOS}
#define PRES_PS_PUBLICATION_PARAMETER_PRESENTATION_QOS_POLICY_DEFAULT \
{PRES_INSTANCE_PRESENTATION_QOS, \
RTI_FALSE, /* coherent_access */ \
RTI_FALSE, /* ordered_access */ \
RTI_TRUE /* dropIncompleteCoherentSet */}
#define PRES_PS_PUBLICATION_PARAMETER_DESTINATION_ORDER_QOS_POLICY_DEFAULT \
{PRES_BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, \
PRES_INSTANCE_SCOPE_DESTINATIONORDER_QOS, \
{0, 429496729} /* 100ms */ }
#define PRES_PS_PUBLICATION_PARAMETER_DEADLINE_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_MAX}
#define PRES_PS_PUBLICATION_PARAMETER_LATENCY_BUDGET_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_ZERO}
#define PRES_PS_PUBLICATION_PARAMETER_LIFESPAN_QOS_POLICY_DEFAULT \
{RTI_NTP_TIME_MAX}
#define PRES_PS_PUBLICATION_PARAMETER_USER_DATA_QOS_POLICY_DEFAULT \
{{0, 0, NULL}}
#define PRES_PS_PUBLICATION_PARAMETER_TOPIC_DATA_QOS_POLICY_DEFAULT \
{{0, 0, NULL}}
#define PRES_PS_PUBLICATION_PARAMETER_GROUP_DATA_QOS_POLICY_DEFAULT \
{{0, 0, NULL}}
#define PRES_PS_PUBLICATION_PARAMETER_PARTITION_QOS_POLICY_DEFAULT \
{{0, 0, NULL}}
#define PRES_PS_PUBLICATION_PARAMETER_LOCATOR_FILTER_QOS_PROPERTY_DEFAULT \
PRES_LOCATOR_FILTER_QOS_PROPERTY_DEFAULT
#define PRES_PS_PUBLICATION_PARAMETER_PROPERTY_QOS_POLICY_DEFAULT \
PRES_PROPERTY_QOS_POLICY_DEFAULT
#define PRES_PS_PUBLICATION_PARAMETER_DATA_TAG_QOS_POLICY_DEFAULT \
PRES_DATA_TAG_QOS_POLICY_DEFAULT
#define PRES_PS_PUBLICATION_PARAMETER_DATA_REPRESENTATION_QOS_POLICY_DEFAULT \
PRES_DATA_REPRESENTATION_QOS_POLICY_DEFAULT
#define PRES_PS_PUBLICATION_PARAMETER_SERVICE_QOS_POLICY_DEFAULT \
{PRES_NO_SERVICE_QOS}
#define PRES_PS_PUBLICATION_PARAMETER_TYPE_OBJECT_MD5_DEFAULT \
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
#define PRES_PS_PUBLICATION_ENDPOINT_PARAMETER_DEFAULT { \
PRES_LOCATOR_DERIVABLE_QOS_POLICY_DEFAULT, /* unicastLocator */ \
PRES_PS_PUBLICATION_PARAMETER_TOPIC_DEFAULT, /* topic */ \
PRES_PS_PUBLICATION_PARAMETER_TYPE_NAME_DEFAULT, /* typeName */ \
MIG_RTPS_OBJECT_ID_UNKNOWN, /* groupOid */ \
NULL, /* typeCode */ \
NULL, /* typeObject */ \
PRES_PS_PUBLICATION_PARAMETER_TYPE_OBJECT_MD5_DEFAULT, /* typeObjectMd5 */ \
PRES_PS_PUBLICATION_PARAMETER_DURABILITY_QOS_POLICY_DEFAULT, /* durabilityQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_RELIABILITY_QOS_POLICY_DEFAULT, /* reliabilityQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_SEND_QUEUE_SIZE_DEFAULT, /* queueSize */ \
PRES_PS_PUBLICATION_PARAMETER_LIVELINESS_QOS_POLICY_DEFAULT, /* livelinessQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_OWNERSHIP_QOS_POLICY_DEFAULT, /* ownershipQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_PRESENTATION_QOS_POLICY_DEFAULT, /* presentationQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_DESTINATION_ORDER_QOS_POLICY_DEFAULT, /* destinationOrderQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_DEADLINE_QOS_POLICY_DEFAULT, /* deadlineQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_LATENCY_BUDGET_QOS_POLICY_DEFAULT, /* latencyBudgetQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_USER_DATA_QOS_POLICY_DEFAULT, /* userDataQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_GROUP_DATA_QOS_POLICY_DEFAULT, /* groupDataQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_TOPIC_DATA_QOS_POLICY_DEFAULT, /* topicDataQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_PARTITION_QOS_POLICY_DEFAULT, /* partitionQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_PROPERTY_QOS_POLICY_DEFAULT, /* propertyQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_DATA_TAG_QOS_POLICY_DEFAULT, /* dataTagQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_DATA_REPRESENTATION_QOS_POLICY_DEFAULT, /* dataRepresentationQosPolicy */ \
MIG_RTPS_GUID_UNKNOWN, /* virtualGuid */ \
PRES_PS_PUBLICATION_PARAMETER_SERVICE_QOS_POLICY_DEFAULT, /* serviceQosPolicy */ \
MIG_RTPS_PROTOCOL_VERSION, /* protocolVersion */ \
MIG_RTPS_VENDOR_ID_UNKNOWN, /* vendorId */ \
PRESProductVersion_INITIALIZER, /* productVersion */ \
RTI_FALSE, /* isIncompatible */ \
RTI_FALSE, /* disableAcks */ \
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT, /* name */ \
PRESEndpointSecurityProtectionInfo_INITIALIZER, /* securityProtectionInfo */ \
PRES_ENDPOINT_RTI_SECURITY_ATTRIBUTES_BITMASK_DEFAULT, /* rtiSecurityAttributes */ \
PRESEndpointSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* securityAlgorithmInfo */ \
MIG_RTPS_GUID_UNKNOWN, /* relatedEntityGuid */ \
PRESSequenceString_INITIALIZER, /* topicAliasNames */ \
PRESSequenceString_INITIALIZER, /* typeAliasNames */ \
NULL, /* typeInformation */ \
0, /* typeProperties */ \
RTI_NTP_TIME_INVALID, /* mostRecentSrcTimestamp */ \
MIG_RTPS_GUID_PREFIX_UNKNOWN /* srcGuidPrefix */ \
}
#define PRES_PS_PUBLICATION_PARAMETER_DEFAULT { \
PRES_PS_PUBLICATION_ENDPOINT_PARAMETER_DEFAULT, /* parent */ \
PRES_PS_PUBLICATION_PARAMETER_EXPECTS_ACK_DEFAULT, /* expectsAck */ \
PRES_PS_PUBLICATION_PARAMETER_MAX_SAMPLE_SERIALIZED_SIZE_DEFAULT, /* maxSampleSerializedSize */ \
PRES_PS_PUBLICATION_PARAMETER_STRENGTH_DEFAULT, /* strength */ \
PRES_PS_PUBLICATION_PARAMETER_PERSISTENCE_DEFAULT, /* persistence */ \
PRES_PS_PUBLICATION_PARAMETER_DURABILITY_SERVICE_QOS_POLICY_DEFAULT, /* durabilityServiceQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_LIFESPAN_QOS_POLICY_DEFAULT, /* lifespanQosPolicy */ \
PRES_PS_PUBLICATION_PARAMETER_LOCATOR_FILTER_QOS_PROPERTY_DEFAULT, /* locatorFilterQosProperty */ \
MIG_RTPS_GUID_UNKNOWN, /* groupVirtualGuid */ \
PRES_TOPIC_QUERY_PUBLICATION_PROPERTY_DEFAULT /* topicQueryPublicationProperty */ \
}
struct PRESBuiltinTopicPublicationData {
/*e GUID of the participant of the data writer.
*/
struct MIGRtpsGuid participantGuid;
/*e GUID of the data writer itself.
*
* In most cases, the data comes from the DomainParticipant identified by
* this GUID prefix, but it may be proxied by a different DomainParticipant.
* The GUID prefix here represents the DomainParticipant that owns the
* DataWriter (prefix is serialized as part of the
* DISC_RTPS_PID_ENDPOINT_GUID parameter). The GUID prefix of the physical
* source (the proxy DomainParticipant, with a GUID prefix found in the RTPS
* header) is cached in parameter->parent.srcGuidPrefix. The distinction is
* important when enforcing authenticity, as the physical and logical
* endpoint GUID prefixes must match, unless proxying is allowed for the
* participant sending the publication data.
*/
struct MIGRtpsGuid guid;
/*e Parameters of the data writer.
*/
struct PRESPsPublicationParameter *parameter;
};
#define PRES_BUILTIN_TOPIC_PUBLICATION_DATA_INITIALIZE \
{ \
MIG_RTPS_GUID_UNKNOWN, /* participantGuid */ \
MIG_RTPS_GUID_UNKNOWN, /* guid */ \
NULL /* parameter */ \
}
struct PRESPsWriterResourceLimits {
/*e immutable. The number of concurrent blocking write thread count policy.
*/
struct REDAFastBufferPoolGrowthProperty blockingWriteThreadCount;
/*i immutable. The maximum number of remote readers to filter for
* NOTE: This poroperty cannot be configured at API level
*/
int initialRemoteReaderFilters;
/*e immutable. The maximum number of remote readers to filter for */
int maxRemoteReaderFilters;
/*e immutable. Initial batches */
int initialBatches;
/*e immutable. Max batches */
int maxBatches;
/*e immutable. Cookie max length */
int cookieMaxLength;
/*e immutable. Instance replacement policy */
PRESInstanceReplacementPolicy instanceReplacementPolicy;
/*e immutable. Whether empty instances are replaced first */
RTIBool replaceEmptyInstances;
/*e immutable. Whether to autoregister instances as they are written */
RTIBool autoregisterInstances;
/*e immutable. Initial virtual writers */
int initialVirtualWriters;
/*e immutable. Max virtual writers */
int maxVirtualWriters;
/*e immutable. Initial remote readers */
int initialRemoteReaders;
/*e immutable. Max remote readers */
int maxRemoteReaders;
/*e immutable. Max appack remote readers */
int maxAppAckRemoteReaders;
/*e immutable. Number of active TopicQueries
*/
struct REDAFastBufferPoolGrowthProperty activeTopicQueryCount;
/*e immutable.
*/
struct REDAFastBufferPoolGrowthProperty writerLoanedSampleAllocation;
/*e immutable.
*/
RTIBool initializeWriterLoanedSample;
};
typedef RTI_UINT16 PRESPsServiceWriterKind;
typedef RTI_UINT16 PRESPsServiceWriterKindMask;
#define PRES_PS_WRITER_RESOURCE_LIMITS_DEFAULT \
{ \
{1, 4, REDA_FAST_BUFFER_POOL_UNLIMITED}, /* blockingWriteThreadCount */ \
128, /* initialRemoteReaderFilters */ \
-1, /* maxRemoteReaderFilters */ \
8, /* initialBatches */ \
REDA_FAST_BUFFER_POOL_UNLIMITED, /* maxBatches */ \
-1, /* cookieMaxLength */ \
PRES_UNREGISTERED_INSTANCE_REPLACEMENT, /* instanceReplacement */ \
RTI_FALSE, /* replaceEmptyInstances */ \
RTI_FALSE, /* autoRegisterInstances */ \
1, /* initialVirtualWriters */ \
-1, /* maxVirtualWriters */ \
2, /* maxRemoteReaders */ \
-1, /* maxRemoteReaders */ \
-1, /* maxAppAckRemoteReaders */ \
/* activeTopicQueryCount */ \
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \
PRESPsServiceWriterLoanedSampleAllocation_INITIALIZER, \
RTI_FALSE /* initializeWriterLoanedSample */ \
}
#define PRESPsServiceWriterLoanedSampleAllocation_INITIALIZER { \
REDA_FAST_BUFFER_POOL_AUTO, /* initial_count */ \
REDA_FAST_BUFFER_POOL_AUTO, /* max_count */ \
REDA_FAST_BUFFER_POOL_AUTO /* incremental_count */ \
}
/*e \ingroup PRESPsServiceModule
NORM and ANON bit cannot be both set for a writer.
If ANON bit is set, one and only one bit among BROADCASTER, TRANSPONDER,
RESPONDER, ANNOUNCER must be set.
Types:
- Broadcaster: Sends messages to multiple remote destinations.
- Transponder: Sends messages periodically (using a heartbeatRate) and
also receives messages (it creates entry ports) and respond
to them.
- Responder: Does not send periodic messages (zero heartbeatRate).
Receives messages (it creates entry ports) and respond to
them.
- Announcer: Does not send periodic messages (zero heartbeatRate).
Does not receive messages (no entry ports).
*/
#define PRES_PS_SERVICE_WRITER_PROPERTY_NORM ((PRESPsServiceWriterKind) 0x01)
#define PRES_PS_SERVICE_WRITER_PROPERTY_ANON ((PRESPsServiceWriterKind) 0x02)
#define PRES_PS_SERVICE_WRITER_PROPERTY_ANON_BROADCASTER ((PRESPsServiceWriterKind) 0x04)
#define PRES_PS_SERVICE_WRITER_PROPERTY_ANON_ANNOUNCER ((PRESPsServiceWriterKind) 0x20)
typedef enum {
PRES_PS_SERVICE_WRITER_HEARTBEAT_RATE_CHANGE_NONE,
PRES_PS_SERVICE_WRITER_HEARTBEAT_RATE_CHANGE_NORM,
PRES_PS_SERVICE_WRITER_HEARTBEAT_RATE_CHANGE_FAST
} PRESPsServiceWriterHeartbeatRateChange;
struct PRESPsWriterProperty {
/*e immutable. parent property. */
struct PRESLocalEndpointProperty parent;
/*e partly mutable. */
struct PRESPsPublicationParameter parameter;
/*e immutable. encodes the kind of reader.
Can't be PRESPsServiceWriterKind because we need to support bitwise
operation. */
/*i For DDS, leave it as default, i.e., NORM */
PRESPsServiceWriterKindMask writerKindMask;
/*e immutable */
struct PRESHistoryQosPolicy history;
/*e immutable */
struct PRESResourceLimitsQosPolicy resourceLimits;
/*e immutable */
struct PRESPsWriterResourceLimits writerResourceLimits;
/*e mutable, unsupported */
struct PRESWriterDataLifecycleQosPolicy writerDataLifecycle;
/*e immutable. If true, dispose automatically causes unregister. Otherwise,
user needs to call unregister explicitly. */
/*i For DDS, leave it as default, i.e., RTI_FALSE */
RTIBool autoUnregister;
/*i immutable. State whether we need to match with locally created
* readers. For DDS, leave it as default, i.e., RTI_TRUE, unless traffic
* between the local endpoints is unnecessary.
*/
RTIBool matchWithLocal;
/*i immutable. Maximum size of the serialized user sample buffer.
If this parameter is greater or equal to 0, getMaxSizeSerializedFnc
method on the type plugin interface will not be called to to get
the maximum size of the serialized user sample. This value will be
used instead. */
int bufferMaxSizeSerialized;
/*i immutable. Type support passed to the queue. Optional. */
struct PRESTypeSupportQosPolicy typeSupport;
/*i immutable. NULL means synchronously writing. */
struct PRESFlowController *flowController;
/*e immutable
We dont send batching information on the wire.
If we decide to send that information batching should be added
to PRESPsPublicationParameter.
*/
struct PRESBatchQosPolicy batch;
/*e immutable
The SequenceLocatorFilterPolicy contains the SQL evaluation functions.
They are not sent on the wire.
The locatorFilterQosProperty contains the filter expression strings,
and is sent on the wire. That is in the PRESPsPublicationParameter */
struct PRESSequenceLocatorFilterPolicy locatorFilterPolicies;
/*e immutable
We do not send disableInlineKeyhash on the wire
*/
RTIBool disableInlineKeyhash;
/*e immutable
We do not send serialize the keys with disposes
*/
RTIBool serializeKeyWithDispose;
/*e immutable */
RTIBool serializeSampleSignature;
#ifdef RTI_LM_ARCHITECTURE
/*e immutable */
RTIBool serializeExpressSampleSignature;
#endif
/*e immutable
*/
struct PRESTransportEncapsulationQosPolicy encapsulation;
/*e mutable. AvailabilityQosPolicy */
struct PRESAvailabilityQosPolicy availabilityQosPolicy;
/* Collaborative Reliability */
/*e immutable
*/
struct REDASequenceNumber initialVirtualSn;
/*e mutable
*/
RTI_INT32 publicationPriority;
/*e immutable
* Enables or disables topic queries and configures their dispatch policy
*/
struct PRESTopicQueryDispatchQosPolicy topicQueryDispatch;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_AVAILABILITY_QOS_POLICY_DEFAULT \
PRES_AVAILABILITY_QOS_POLICY_DEFAULT
#ifdef RTI_LM_ARCHITECTURE
#define PRES_PS_WRITER_PROPERTY_OPT_SERIALIZE_SAMPLE_SIGNATURE \
RTI_FALSE, /* serializeExpressSampleSignature */
#else
#define PRES_PS_WRITER_PROPERTY_OPT_SERIALIZE_SAMPLE_SIGNATURE
#endif
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_WRITER_PROPERTY_DEFAULT { \
PRES_LOCAL_ENDPOINT_PROPERTY_DEFAULT, /* parent */ \
PRES_PS_PUBLICATION_PARAMETER_DEFAULT, /* parameter */ \
PRES_PS_SERVICE_WRITER_PROPERTY_NORM, /* bitmap */ \
PRES_HISTORY_QOS_POLICY_DEFAULT, /* history */\
{ /* resourceLimits */ \
{1, 4, REDA_FAST_BUFFER_POOL_UNLIMITED}, /* sampleCount */ \
{1, 4, REDA_FAST_BUFFER_POOL_UNLIMITED}, /* instanceCount */ \
4, /* maxSamplesPerInstance */ \
1 /* instanceHashBuckets */ \
}, \
PRES_PS_WRITER_RESOURCE_LIMITS_DEFAULT, /* writerResourceLimits */ \
PRES_WRITER_DATA_LIFECYCLE_QOS_POLICY_DEFAULT, \
RTI_FALSE, /* autoUnregister */ \
RTI_TRUE, /* matchWithLocal */ \
-1, /* bufferMaxSizeSerialized */ \
PRES_TYPE_SUPPORT_QOS_POLICY_DEFAULT, /* typeSupport */ \
NULL, /* flowController */ \
{ \
RTI_FALSE, /* enable */ \
-1, /* maxDataBytes */ \
-1, /* maxMetaDataBytes */ \
1024, /* maxSamples */ \
RTI_NTP_TIME_MAX, /* maxFlushDelay */ \
RTI_NTP_TIME_MAX, /* sourceTimestampResolution */ \
RTI_TRUE, /* threadSafewrite */ \
}, \
PRES_SEQ_LOCATOR_FILTER_POLICY_DEFAULT, \
RTI_FALSE, \
RTI_FALSE, \
RTI_FALSE, /* serializeSampleSignature */ \
PRES_PS_WRITER_PROPERTY_OPT_SERIALIZE_SAMPLE_SIGNATURE \
PRES_TRANSPORT_ENCAPSULATION_QOS_POLICY_DEFAULT, \
PRES_PS_AVAILABILITY_QOS_POLICY_DEFAULT, \
REDA_SEQUENCE_NUMBER_AUTO, /* initialVirtualSn */ \
PRES_PUBLICATION_PRIORITY_UNDEFINED, /* publicationPriority */ \
PRES_TOPIC_QUERY_DISPATCH_QOS_POLICY_DEFAULT \
}
extern PRESDllExport
RTIBool PRESPsWriterProperty_configureTopicAlias(
struct PRESPsWriterProperty *writerProperty,
struct PRESParticipant *participant,
MIGRtpsObjectId objectId,
const char *topicName,
const char *typeName,
struct REDAWorker *worker);
struct PRESPsBeWriterProperty {
/*e parent property */
struct PRESPsWriterProperty parent;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_BE_WRITER_PROPERTY_DEFAULT { \
PRES_PS_WRITER_PROPERTY_DEFAULT /* parent */ \
}
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SR_WRITER_PROPERTY_REPEAT_ANNOUNCE_PERIOD_FAST_INVALID RTI_NTP_TIME_INVALID
struct PRESPsSrWriterProperty {
/*e parent property */
struct PRESPsWriterProperty parent;
/*e mutable. When the number of unacknowledged samples reaches or falls
below this number, the writer will use repeatAnnouncePeriodNorm and a
callback will be issued. */
int lowWaterMark;
/*e mutable. When the number of unacknowledged samples reaches or exceeds
this number, the writer will use repeatAnnouncePeriodFast and a
callback will be issued. The value 0 is not valid. */
int highWaterMark;
/*e mutable. The normal rate at which to announce writer's queue status, or
ask for ack from remote reader. */
struct RTINtpTime repeatAnnouncePeriodNorm;
/*e mutable. The fast rate at which to announce writer's queue status, or
ask for ack from remote reader. The special value of
PRES_PS_SR_WRITER_PROPERTY_REPEAT_ANNOUNCE_PERIOD_FAST_INVALID can be set
to specify that only the normal repeat announce period should be used. */
struct RTINtpTime repeatAnnouncePeriodFast;
/*e mutable. The rate for late-joining readers at which to announce
writer's queue status, or ask for ack from remote reader. */
struct RTINtpTime lateJoinerAnnouncePeriod;
/*e mutable. The rate at which to announce virtual writer's queue status */
struct RTINtpTime repeatAnnounceVirtualPeriod;
/*e mutable. The number of samples to send between annnouncements of virtual
writer's queue status */
int samplesPerAnnounceVirtual;
/*e mutable. The max number of annnounce retries before setting a remote
reader to inactive. */
int maxRetries;
/*e mutable. The min delay between the time writer receives some message
from reader and the time writer responds to that message. If it is ZERO,
it means to send response immediately. */
struct RTINtpTime responseDelayMin;
/*e mutable. The max delay between the time writer receives some message
from reader and the time writer responds to that message. It must be >=
responseDelayMin. */
struct RTINtpTime responseDelayMax;
/*e mutable. The window during which heartbeats that would trigger
redundant NACKs are ignored. */
struct RTINtpTime nackSuppressionDuration;
/*e mutable. How often a piggyback heartbeat should be inserted. The
acceptable range is [0, parent.parameter.parent.queueSize]. If it's 0, no
piggyback heartbeat will be inserted. Otherwise, for every
int(parent.parameter.parent.queueSize/heartbeatPerSendQueue) number of
issues, a piggyback heartbeat will be inserted.
*/
int heartbeatPerSendQueue;
/*e mutable. Maximum of bytes to send per nack request. If nack asks for
more repair samples than those fit into the bytes limit, write will wait
for the next nack to send the rest samples.
*/
int maxBytesPerNackResponse;
/*e immutable. If the pushMode == FALSE, everytime a writer writes an issue,
the issue is simply put into the queue, but does not get sent. Otherwise,
the issue will be sent out. */
RTIBool pushMode;
/*e immutable. If nonProgressingNackIsInactive == TRUE, a reader will be
treated as INACTIVE if it either doesn't send any ACKNACKs or sends successive
non-progresssing NACKs (i.e. with the same first sequence number) for more
than #hbRetriesMax of HB periods */
RTIBool nonProgressingNackIsInactive;
/*e mutable. The min delay between two pushs of the same data.
Not used yet. */
struct RTINtpTime pushDelayMin;
/*e mutable.The min delay between two pushs of the same data.
Not used yet. */
struct RTINtpTime pushDelayMax;
/*e mutable. The max number of push retries. Not used yet. */
int pushAttemptMax;
/*e mutable */
struct RTINtpTime minAckDelay;
/*e mutable */
struct RTINtpTime maxAckDelay;
struct RTINtpTime ackDelayMinSeparation;
RTIBool enableAdaptiveAckDelay;
RTIBool enableAckDelaySpinWait;
RTI_INT32 increaseAckDelayScaler;
RTI_INT32 decreaseAckDelayScaler;
/*e mutable */
struct RTINtpTime ackStateUpdateRate;
RTI_INT32 sendWindowSizeMin;
RTI_INT32 sendWindowSizeMax;
struct RTINtpTime sendWindowUpdatePeriod;
RTI_INT32 sendWindowIncreaseFactor;
RTI_INT32 sendWindowDecreaseFactor;
RTI_INT32 multicastResendThreshold;
RTIBool multicastPeriodicHB;
/* Indicates if the DW will get callbacks where the AppAck
* has an empty response
*/
RTIBool propagateAppAckWithNoResponse;
/* Prevents piggyback HBs from being sent with repair samples. */
RTIBool disableRepairPiggybackHB;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_SR_WRITER_PROPERTY_DEFAULT { \
PRES_PS_WRITER_PROPERTY_DEFAULT, /* parent */ \
0, /* lowWaterMark */ \
1, /* highWaterMark */ \
{1, 0}, /* repeatAnnouncePeriodNorm */ \
PRES_PS_SR_WRITER_PROPERTY_REPEAT_ANNOUNCE_PERIOD_FAST_INVALID, \
{1, 0}, /* lateJoinerAnnouncePeriod */ \
RTI_NTP_TIME_MAX, /* repeatAnnounceVirtualPeriod */ \
PRES_LENGTH_UNLIMITED, /* samplesPerAnnounceVirtual */ \
10, /* maxRetries */ \
{0, 0}, /* responseDelayMin */ \
{0, 0}, /* responseDelayMax */ \
{0, 0}, /* nackSuppressionDuration */ \
1, /* heartbeatPerSendQueue */ \
9216, /* maxBytesPerNackResponse */ \
RTI_TRUE, /* pushMode */ \
RTI_FALSE, /* nonProgressingNackIsInactive */ \
{0, 0}, /* pushDelayMin */ \
{0, 0}, /* pushDelayMax */ \
1, /* pushAttemptMax */ \
{0, 4294967}, /* minAckDelay (1ms) */ \
{1, 0}, /* maxAckDelay (1sec) */ \
{0, 429496}, /* minSeparation */ \
RTI_TRUE, /* enableAdaptiveAckDelay */ \
RTI_FALSE, /* enableAckDelaySpinWait */ \
150, /* increasesAckDelayScaler */ \
95, /* decreaseAckDelayScaler */ \
{3, 0}, /* ackStateUpdateRate */ \
PRES_LENGTH_UNLIMITED, /* sendWindowSizeMin */ \
PRES_LENGTH_UNLIMITED, /* sendWindowSizeMax */ \
{1, 0}, /* sendWindowUpdatePeriod */ \
105, /* sendWindowIncreaseFactor */ \
50, /* sendWindowDecreaseFactor */ \
2, /* multicastResendThreshold */ \
RTI_FALSE, /* multicastPeriodicHB */ \
RTI_TRUE, /* propagateAppAckWithNoResponse */ \
RTI_FALSE /* disableRepairPiggybackHB */ \
}
extern PRESDllExport void PRESPsSrWriterProperty_initialize(
struct PRESPsSrWriterProperty *property);
struct REDAInlineList;
struct PRESPsAnonWriterProperty {
/*e parent property. */
struct PRESPsWriterProperty parent;
/*e immutable. The remote reader's oid to whom the writer will send data,
and from whom the writer expects to receive response. */
MIGRtpsObjectId remoteReaderOid;
/*e
* mutable. The rate used to send out participant announcements on the
* anonymous channel. When using SPDP2 this is
* participant_announcement_period. When using SPDP this is
* participant_liveliness_assert_period
*/
struct RTINtpTime participantAnnouncementPeriod;
/*e mutable. The response delay when a transponder or responder receive
request from remote reader. Must >= 0. */
struct RTINtpTime nackResponseDelay;
/*e
* Where to broadcast to; translates to _destinations.list in disc. This
* is the full list of destinations for the anonymous writer.
*/
struct REDAInlineList *destinations;
/*e
* This is the list of destinations that have changed since the last time
* anonw->assertRemoteReader() was called. When updaing the COMMEND
* anonymous writer, we will use the _presPropertyChangeEpoch and the
* commendPropertyChangeEpoch to determine if we can use this list to
* update the destinations.
*/
struct REDAInlineList *changeDestinations;
/* Locator in which a participant is announced to the default domain */
struct RTINetioLocator domainBroadcastLocator;
/* The rate at which a participant is announced to the default domain.
* If ZERO, the participant is not announced periodically
*/
struct RTINtpTime domainBroadcastPeriod;
};
typedef RTI_UINT16 PRESPsServiceReaderKind;
typedef RTI_UINT16 PRESPsServiceReaderKindMask;
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_ANON_WRITER_PROPERTY_DEFAULT \
{ \
PRES_PS_WRITER_PROPERTY_DEFAULT, /* parent */ \
MIG_RTPS_OBJECT_ID_UNKNOWN, /* remoteReaderOid */ \
{ 0, 0 }, /* participantAnnouncementPeriod */ \
{ 0, 0 }, /* nackResponseDelay */ \
NULL, /* destinations */ \
NULL, /* changeDestinations */ \
RTI_NETIO_LOCATOR_INVALID, /* domainBroadcastLocator */ \
{ 0, 0 } /* domainBroadcastPeriod */ \
}
/*e \ingroup PRESPsServiceModule
Both NORM and ANON bits can be set for a reader
*/
#define PRES_PS_SERVICE_READER_PROPERTY_NORM ((PRESPsServiceReaderKind) 0x01)
#define PRES_PS_SERVICE_READER_PROPERTY_ANON ((PRESPsServiceReaderKind) 0x02)
#define PRES_PS_SERVICE_READER_PROPERTY_ANON_PROMISCUOUS ((PRESPsServiceReaderKind) 0x04)
#define PRES_AUTO_MAX_TOTAL_INSTANCES 0
struct PRESPsReaderFragmentationResourceLimits {
/*e
* immutable. Determines whether the reader supports receiving fragments
* samples.
*/
RTIBool disableFragmentationSupport;
/*e
* immutable. The number of fragmented samples for all remote writers.
* Completely independent from maxSamples (full samples), etc.
*/
struct REDAFastBufferPoolGrowthProperty fragmentedSamples;
/*e
* immutable. The maximum number of fragmented samples for a given remote
* writer. Completely independent from maxSamples (full samples), etc.
*/
int maxFragmentedSamplesPerRemoteWriter;
/*e
* immutable. The maximum number of fragments for any samples.
*/
int maxFragmentsPerSample;
/*e
* immutable. Pre-allocation means buffers are allocated to max size (can be
* wasteful), but with dynamic allocation the correct size can be allocated
* (can be undeterministic).
*/
RTIBool dynamicallyAllocateFragmentedSamples;
};
extern PRESDllExport
int PRESPsReaderFragmentationResourceLimits_compare(
const struct PRESPsReaderFragmentationResourceLimits *l,
const struct PRESPsReaderFragmentationResourceLimits *r);
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_READER_FRAGMENTATION_RESOURCE_LIMITS_DEFAULT { \
RTI_TRUE, /* disableFragmentationSupport */ \
{4, 1024, REDA_FAST_BUFFER_POOL_UNLIMITED }, /* fragmentedSamples: */ \
256, /* maxFragmentedSamplesPerRemoteWriter: */ \
512, /* maxFragmentsPerSample: */ \
RTI_FALSE /* dynamicallyAllocateFragmentedSamples: */ \
}
struct PRESPsReaderResourceLimits {
/*e immutable. The maximum allowable number of samples per remote writer. */
int maxSamplesPerRemoteWriter;
/*e immutable. Number of remote writer queues. */
struct REDAFastBufferPoolGrowthProperty remoteWriterCount;
/*e immutable. Control growth of instance info. */
struct REDAFastBufferPoolGrowthProperty infoCount;
/*e immutable. Control growth of remote writers per instance. */
struct REDAFastBufferPoolGrowthProperty remoteWriterCountPerInstance;
/* immutable. Control growth of outstanding reads */
struct REDAFastBufferPoolGrowthProperty outstandingReadCount;
/*e immutable. The maximum number samples that can be returned from
read/take. Must be a finite positive number. */
int maxSamplesPerRead;
/*e
* immutable. Control the resource limits settings reflated to
* fragmentation.
*/
struct PRESPsReaderFragmentationResourceLimits fragmentation;
/* immutable. Max total instances (including registered and unregistered instances)
*/
int maxTotalInstances;
/*e immutable. Control growth of remote virtual writers */
struct REDAFastBufferPoolGrowthProperty remoteVirtualWriterCount;
/*e immutable. Control growth of remote virtual writers per instance. */
struct REDAFastBufferPoolGrowthProperty remoteVirtualWriterCountPerInstance;
/*e immutable. The maximum number of query condition content filters
*/
int maxQueryConditionFilters;
/*e immutable. The maximum allowable number of remote writers per sample */
int maxRemoteWritersPerSample;
/*e immutable. The maximum reliability receive window size */
int maxReceiveWindowSize;
/*e immutable. The maximum size of the application acknowledgment response */
int maxAppAckResponseLength;
/*e immutable. Whether or not to keep minimum instance state for deleted
instances.
*/
RTIBool keepMinimumStateForInstances;
/* e immutable. If true, batch resources are allocated only when the first
* DATA_BATCH or HEARTBEAT_BATCH is received from a remote writer.
* If false, batch resources are pre-allocated.
*/
RTIBool lazilyAllocateBatchResources;
/*e immutable. Number of TopicQueries
*/
struct REDAFastBufferPoolGrowthProperty topicQueryCount;
/*e immutable.
*/
struct REDAFastBufferPoolGrowthProperty shmemRefTransferModeAttachedSegmentAllocation;
/*e immutable. Kind of instances of each state that can be replaced */
struct PRESDataReaderResourceLimitsInstanceReplacementSettings instanceReplacement;
/*e immutable. Delay before remote NOT_ALIVE writers will be purged
*/
RTINtpTime autopurgeRemoteNotAliveWriterDelay;
/*i immutable. Delay before remote virtual writers will be purged
*/
RTINtpTime autopurgeRemoteVirtualWriterDelay;
};
extern PRESDllExport
int PRESPsReaderResourceLimits_compare(
const struct PRESPsReaderResourceLimits *l,
const struct PRESPsReaderResourceLimits *r);
#define PRESPsServiceShmemRefTransferModeAttachedSegmentAllocation_INITIALIZER { \
REDA_FAST_BUFFER_POOL_AUTO, /* initial_count */ \
REDA_FAST_BUFFER_POOL_AUTO, /* max_count */ \
REDA_FAST_BUFFER_POOL_AUTO /* incremental_count */ \
}
/*e \ingroup PRESPsServiceModule */
/* clang-format off */
#define PRES_PS_READER_RESOURCE_LIMITS_DEFAULT \
{ \
REDA_FAST_BUFFER_POOL_UNLIMITED, /* maxSamplesPerRemoteWriter */ \
/* remoteWriterCount */ \
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \
/* infoCount */ \
{32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \
/* remoteWriterCountPerInstance */ \
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \
/* outstandingReadCount */ \
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \
1024, /* maxSamplesPerRead: should NEVER be unlimited */ \
PRES_PS_READER_FRAGMENTATION_RESOURCE_LIMITS_DEFAULT, /* fragmentation */ \
PRES_AUTO_MAX_TOTAL_INSTANCES, /* maxTotalInstances */ \
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, /* remoteVirtualWriterCount */\
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, /* remoteVirtualWriterCountPerInstance */\
4, /* maxQueryConditionFilters */ \
3, /* maxRemoteWritersPerSample */ \
256, /* maxReceiveWindowSize */ \
1, /* maxAppAckResponseLength */ \
RTI_TRUE, /* keepMinimumStateForInstances */ \
RTI_TRUE, /* lazilyAllocateBatchResources */ \
/* topicQueryCount */ \
{1, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \
PRESPsServiceShmemRefTransferModeAttachedSegmentAllocation_INITIALIZER, \
PRESPsReaderDataReaderResourceLimitsInstanceReplacementSettings_INITIALIZER, /* instanceReplacement */ \
RTI_NTP_TIME_AUTO, /* autopurgeRemoteNotAliveWriterDelay */ \
RTI_NTP_TIME_MAX /* autopurgeRemoteVirtualWriterDelay */ \
}
/* clang-format on */
struct PRESPsReaderProperty {
/*e immutable parent property */
struct PRESLocalEndpointProperty parent;
/*e partly mutable */
struct PRESPsSubscriptionParameter parameter;
/*e immutable encodes the kind of reader.
Can't be PRESPsServiceReaderKind because we need to support bit operation
*/
/*i For DDS, leave it as default, i.e., NORM */
PRESPsServiceReaderKindMask readerKindMask;
/*e immutable */
struct PRESHistoryQosPolicy history;
/*e immutable */
struct PRESResourceLimitsQosPolicy resourceLimits;
/*e immutable */
struct PRESPsReaderResourceLimits readerResourceLimits;
/*e mutable, unsupported */
struct PRESReaderDataLifecycleQosPolicy readerDataLifecycle;
/*e immutable. If true, onDataOnReaders callback in group/service listener
will be skipped when we receive new data. */
/*i For DDS, leave it as default, i.e., RTI_FALSE */
RTIBool skipOnDataOnReaders;
/*i immutable. State whether we need to match with local writers.
* For DDS, leave it as default, i.e., RTI_TRUE, unless traffic
* between the local endpoints is unnecessary.
*/
RTIBool matchWithLocal;
/*i immutable. Serialize option passed to the queue. Optional. */
struct PRESTypeSupportQosPolicy typeSupport;
/*i immutable */
RTIBool propagateDisposeOfUnregisteredInstances;
/*i immutable */
RTIBool propagateUnregisterOfDisposedInstances;
/*i immutable */
RTIBool deserializeSampleSignature;
/*e mutable. AvailabilityQosPolicy */
struct PRESAvailabilityQosPolicy availabilityQosPolicy;
/*e
* immutable
* Time that must have passed from an instance's lastTouchedTime in order
* to be purged by PRESPsReader_onPurgeAnonReaderNoWritersInstances if it
* has no writers.
*/
RTINtpTime purgeNoWritersInstancesExpirationTime;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_READER_PROPERTY_DEFAULT \
{ \
PRES_LOCAL_ENDPOINT_PROPERTY_DEFAULT, /* parent */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DEFAULT, /* parameter */ \
PRES_PS_SERVICE_READER_PROPERTY_NORM, /* bitmap */ \
PRES_HISTORY_QOS_POLICY_DEFAULT, /* history */ \
{ /* resourceLimits */ \
{ 1, 4, REDA_FAST_BUFFER_POOL_UNLIMITED }, /* sampleCount */ \
{ 1, 4, REDA_FAST_BUFFER_POOL_UNLIMITED }, /* instanceCount */ \
4, /* maxSamplesPerInstance */ \
1 /* instanceHashBuckets */ \
}, \
PRES_PS_READER_RESOURCE_LIMITS_DEFAULT, \
PRES_READER_DATA_LIFECYCLE_QOS_POLICY_DEFAULT, /* readerDataLifecycle */ \
RTI_FALSE, /* skipOnDataOnReaders */ \
RTI_TRUE, /* matchWithLocal */ \
PRES_TYPE_SUPPORT_QOS_POLICY_DEFAULT, /* typeSupport */ \
RTI_FALSE, /* propagateDisposeOfUnregisteredInstances */ \
RTI_FALSE, /* propagateUnregisterOfDisposedInstances */ \
RTI_FALSE, /* deserializeSampleSignature */ \
PRES_PS_AVAILABILITY_QOS_POLICY_DEFAULT, \
RTI_NTP_TIME_MAX /* purgeNoWritersInstancesExpirationTime */ \
}
extern PRESDllExport
RTIBool PRESPsReaderProperty_configureTopicAlias(
struct PRESPsReaderProperty *readerProperty,
struct PRESParticipant *participant,
MIGRtpsObjectId objectId,
const char *topicName,
const char *typeName,
struct REDAWorker *worker);
struct PRESPsBeReaderProperty {
/*e Partially mutable superclass instance. */
struct PRESPsReaderProperty parent;
};
/*e \ingroup PRESPsServiceModule
* Default property values for a best effort reader.
*/
#define PRES_PS_BE_READER_PROPERTY_DEFAULT { \
PRES_PS_READER_PROPERTY_DEFAULT, /* parent */ \
}
struct PRESPsSrReaderProperty {
/*e Partially mutable superclass instance. */
struct PRESPsReaderProperty parent;
/*e mutable. Min delay between sending an ACk and receiving a HB. */
struct RTINtpTime ackDelayMin;
/*e mutable. Max delay between sending an ACk and receiving a HB. */
struct RTINtpTime ackDelayMax;
/*e mutable. The maximum of samples (received or not) to put into one nack
message.<br>
TODO: not used yet.
*/
int maxSamplesPerNack;
/*e mutable. The rate to send periodic ACKs. If set to ZERO, no periodic
ACK gets sent. Currently just left as default. It is used in
commend but not really tested. */
struct RTINtpTime nackPeriod;
/*e mutable. The max retries of ACKs before deactivating a remote writer,
if nothing received from that remote writer during the retry period.
Currently left as default. It is used in commend but not really tested.
*/
int nackRetriesMax;
/*e mutable. To avoid responding to too frequent HBs. */
struct RTINtpTime heartbeatSuppressionDuration;
/*e immutable. Reliability receive window. */
int receiveWindowSize;
/*e immutable. Estimate of round-trip time */
struct RTINtpTime roundTripTime;
/*e mutable. Period which reader sends app-acks */
struct RTINtpTime appAckPeriod;
/*e mutable. Minimum duration for which an app-ack payload is cached by a reader */
struct RTINtpTime minAppAckResponseKeepDuration;
/*e mutable. */
int samplesPerAppAck;
};
/*e \ingroup PRESPsServiceModule
* Default property values for a reliable reader.
*/
#define PRES_PS_SR_READER_PROPERTY_DEFAULT \
{ \
PRES_PS_READER_PROPERTY_DEFAULT, /* parent */ \
{ 0, 0 }, /* ackDelayMin */ \
{ 0, 0 }, /* ackDelayMax */ \
256, /* maxSamplesPerNack */ \
{ 5, 0 }, /* nackPeriod */ \
1, /* maxNackRetries */ \
{ 0, 0xFFFFFFF }, /* heartbeatSuppressionDuration */ \
256, /* receiveWindowSize */ \
{ 0, 0 }, /* roundTripTime */ \
{ 5, 0 }, /* appAckPeriod */ \
{ 0, 0 }, /* minAppAckResponseKeepDuration */ \
1 /* samplesPerAppAck */ \
}
extern PRESDllExport void PRESPsSrReaderProperty_initialize(
struct PRESPsSrReaderProperty *property);
struct PRESPsAnonReaderProperty {
/*e parent property */
struct PRESPsSrReaderProperty parent;
/*e The oid of the remote writer from which the anon reader expects to
receive data. */
MIGRtpsObjectId remoteWriterOid;
};
/*e \ingroup PRESPsServiceModule */
#define PRES_PS_ANON_READER_PROPERTY_DEFAULT { \
PRES_PS_SR_READER_PROPERTY_DEFAULT, /* parent */ \
MIG_RTPS_OBJECT_ID_UNKNOWN /* remoteWriterOid */ \
}
struct PRESPsRemoteWriterProperty {
/*e Superclass instance. */
struct PRESRemoteEndpointProperty parent;
/*e The parameter values. */
struct PRESPsPublicationParameter parameter;
/*e The highest sequence number the remote writer has. Set to UNKNOWN if
unknown. */
struct REDASequenceNumber *maxAvailableSn;
/*
* SEC-2795:
* If this remote endpoint belongs to the local participant, this is a
* pointer to the local endpoint.
* Else, this pointer is NULL.
* This local endpoint is ensured to remain valid for the whole life of the
* remote endpoint because we always remove the remote endpoint before
* removing its local counterpart.
* This pointer is used to access information from the local endpoint
* without requiring this information to be duplicated from the local to
* the remote endpoint.
*/
struct PRESLocalEndpoint *localEndpoint;
/*e Number of locatorFilter derived sessions */
RTI_INT32 numberOfSessions;
};
/*e \ingroup PRESPsServiceModule
* The default property values of a remote writer.
*/
#define PRES_PS_REMOTE_WRITER_PROPERTY_DEFAULT { \
PRES_REMOTE_ENDPOINT_PROPERTY_DEFAULT, /* parent */ \
PRES_PS_PUBLICATION_PARAMETER_DEFAULT, /* parameter */ \
NULL, /* maxAvailableSn */ \
NULL, /* localEndpoint */ \
1 /* numberOfSessions */ \
}
struct PRESPsRemoteReaderProperty {
/*e Superclass instance. */
struct PRESRemoteEndpointProperty parent;
/*i Type code name. */
/* We need this to store typeCodeName for Java, when typecode is > 64k.
* In that case, typecode is not saved, and creation of CFT fails,
* because we cannot compile, because the class cannot be looked up in Java.
* If we have the typecode name, then Java can look up the class, and
* compile the filter successfully.
*/
const char *typeCodeName;
/*
* SEC-2795:
* If this remote endpoint belongs to the local participant, this is a
* pointer to the local endpoint.
* Else, this pointer is NULL.
* This local endpoint is ensured to remain valid for the whole life of the
* remote endpoint because we always remove the remote endpoint before
* removing its local counterpart.
* This pointer is used to access information from the local endpoint
* without requiring this information to be duplicated from the local to
* the remote endpoint.
*/
struct PRESLocalEndpoint *localEndpoint;
/*e Parameter. */
struct PRESPsSubscriptionParameter parameter;
};
/*e \ingroup PRESPsServiceModule
* The default property values of a remote reader.
*/
#define PRES_PS_REMOTE_READER_PROPERTY_DEFAULT { \
PRES_REMOTE_ENDPOINT_PROPERTY_DEFAULT, /* parent */ \
NULL, /* typeCodeName */ \
NULL, /* localEndpoint */ \
PRES_PS_SUBSCRIPTION_PARAMETER_DEFAULT /* parameter */ \
}
struct PRESPsReaderListener;
struct REDAWorker;
typedef void
(*PRESPsReaderListenerOnRequestedDeadlineMissedCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESRequestedDeadlineMissedStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnRequestedIncompatibleQosCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESRequestedIncompatibleQosStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnSampleRejectedCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESSampleRejectedStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnLivelinessChangedCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESLivelinessChangedStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnSampleLostCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESSampleLostStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnLivelinessUpdatedCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESLivelinessUpdatedStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnSubscriptionMatchCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
const struct PRESSubscriptionMatchStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsReaderListenerOnDataAvailableCallback)(
const struct PRESPsReaderListener *listener,
struct PRESPsReader *reader,
struct REDAWorker *worker);
struct PRESPsReaderListener {
PRESPsReaderListenerOnRequestedDeadlineMissedCallback
onRequestedDeadlineMissed;
PRESPsReaderListenerOnRequestedIncompatibleQosCallback
onRequestedIncompatibleQos;
PRESPsReaderListenerOnSampleRejectedCallback onSampleRejected;
PRESPsReaderListenerOnLivelinessChangedCallback onLivelinessChanged;
PRESPsReaderListenerOnSampleLostCallback onSampleLost;
PRESPsReaderListenerOnSubscriptionMatchCallback onSubscriptionMatch;
PRESPsReaderListenerOnDataAvailableCallback onDataAvailable;
/* For discovery usage only for now */
PRESPsReaderListenerOnLivelinessUpdatedCallback onLivelinessUpdated;
};
#define PRESPsReaderListener_initialize( \
onRequestedDeadlineMissed__, \
onRequestedIncompatibleQos__, \
onSampleRejected__, \
onLivelinessChanged__, \
onSampleLost__, \
onSubscriptionMatch__, \
onDataAvailable__, \
onLivelinessUpdated__) \
{ \
(onRequestedDeadlineMissed__), (onRequestedIncompatibleQos__), \
(onSampleRejected__), (onLivelinessChanged__), (onSampleLost__), \
(onSubscriptionMatch__), (onDataAvailable__), \
(onLivelinessUpdated__) \
}
#define PRESPsReaderListener_INITIALIZER \
PRESPsReaderListener_initialize( \
NULL, /* onRequestedDeadlineMissed */ \
NULL, /* onRequestedIncompatibleQos */ \
NULL, /* onSampleRejected */ \
NULL, /* onLivelinessChanged */ \
NULL, /* onSampleLost */ \
NULL, /* onSubscriptionMatch */ \
NULL, /* onDataAvailable */ \
NULL /* onLivelinessUpdated */)
struct PRESPsWriterListener;
typedef void
(*PRESPsWriterListenerOnOfferedDeadlineMissedCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESOfferedDeadlineMissedStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnOfferedIncompatibleQosCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESOfferedIncompatibleQosStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnLivelinessLostCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESLivelinessLostStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnLivelinessChangedCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESLivelinessChangedStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnPublicationMatchCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESPublicationMatchStatus *status,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnPublicationReliableQueueCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESPublicationReliableQueueStatus *status,
struct REDAWorker *worker);
typedef void*
(*PRESPsWriterListenerOnDataRequestCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESCookie *cookie,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnDataReturnCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
void* instanceData,
const struct PRESCookie *cookie,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnSampleRemovedCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESCookie *cookie,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnDestinationUnreachableCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESInstanceHandle *subscriptionHandle,
const struct RTINetioLocator *destination,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnInstanceReplacedCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESInstanceHandle *instanceHandle,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnApplicationAcknowledgmentCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
struct PRESAcknowledgmentInfo *ackInfo,
struct REDAWorker *worker);
typedef void (*PRESPsWriterListenerOnEmptyVirtualWriterCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct NDDS_WriterHistory_OriginalWriterInfo *virtualWriterInfo,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterListenerOnServiceRequestAcceptedCallback)(
const struct PRESPsWriterListener *listener,
struct PRESPsWriter *writer,
const struct PRESServiceRequestAcceptedStatus *status,
struct REDAWorker *worker);
struct PRESPsWriterListener {
PRESPsWriterListenerOnOfferedDeadlineMissedCallback
onOfferedDeadlineMissed;
PRESPsWriterListenerOnOfferedIncompatibleQosCallback
onOfferedIncompatibleQos;
PRESPsWriterListenerOnLivelinessLostCallback onLivelinessLost;
PRESPsWriterListenerOnLivelinessChangedCallback onLivelinessChanged;
PRESPsWriterListenerOnPublicationMatchCallback onPublicationMatch;
PRESPsWriterListenerOnPublicationReliableQueueCallback
onPublicationReliableQueue;
PRESPsWriterListenerOnDataRequestCallback onDataRequest;
PRESPsWriterListenerOnDataReturnCallback onDataReturn;
PRESPsWriterListenerOnSampleRemovedCallback onSampleRemoved;
PRESPsWriterListenerOnDestinationUnreachableCallback
onDestinationUnreachable;
PRESPsWriterListenerOnInstanceReplacedCallback onInstanceReplaced;
PRESPsWriterListenerOnApplicationAcknowledgmentCallback
onApplicationAcknowledgment;
PRESPsWriterListenerOnServiceRequestAcceptedCallback onServiceRequestAccepted;
PRESPsWriterListenerOnEmptyVirtualWriterCallback onEmptyVirtualWriter;
};
#define PRESPsWriterGroup PRESGroup
#define PRESPsReaderGroup PRESGroup
struct PRESPsWriterGroupProperty {
/*e immutable */
struct PRESGroupProperty parent;
/*e immutable */
struct PRESAsynchronousPublisherQosPolicy asynchronousPublisher;
/*e mutable */
struct PRESEntityFactoryQosPolicy entityFactory;
/*e immutable
whether this group needs to be destroyed when deleteContainedEntities
is called on the factory
*/
RTIBool explicitDestroyOnly;
/*e immutable */
struct PRESEntityNameQosPolicy publisherName;
};
/*e \ingroup PRESPsWriterGroupModule
* Default values for PRESPsWriterGroupProperty.
*/
#define PRES_PS_WRITER_GROUP_PROPERTY_DEFAULT { \
PRES_GROUP_PROPERTY_DEFAULT, \
PRES_ASYNCHRONOUS_PUBLISHER_QOS_POLICY_DEFAULT, \
{RTI_TRUE}, \
RTI_FALSE, \
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT /* publisher name */ \
}
struct PRESPsReaderGroupProperty {
/*e immutable */
struct PRESGroupProperty parent;
/*e mutable */
struct PRESEntityFactoryQosPolicy entityFactory;
/*e immutable
whether this group needs to be destroyed when deleteContainedEntities
is called on the factory
*/
RTIBool explicitDestroyOnly;
/*e immutable */
struct PRESEntityNameQosPolicy subscriberName;
};
/*e \ingroup PRESPsReaderGroupModule
* Default values for PRESPsReaderGroupProperty.
*/
#define PRES_PS_READER_GROUP_PROPERTY_DEFAULT { \
PRES_GROUP_PROPERTY_DEFAULT, \
{RTI_TRUE}, \
RTI_FALSE, \
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT /* subscriber name */ \
}
struct PRESPsReaderGroupListener;
typedef void
(*PRESPsReaderGroupListenerOnDataOnReadersCallback)(
const struct PRESPsReaderGroupListener *listener,
struct PRESPsReaderGroup *readerGroup,
struct REDAWorker *worker);
struct PRESPsReaderGroupListener {
struct PRESPsReaderListener readerListener;
PRESPsReaderGroupListenerOnDataOnReadersCallback onDataOnReaders;
};
struct PRESPsWriterGroupListener {
struct PRESPsWriterListener writerListener;
};
typedef RTIBool
(*PRESPsServiceEntityEnableListenerTopicQueryEnableFnc)(
void* topicQueryEnableParam,
void* userObject,
struct REDAWorker *worker);
struct PRESPsServiceEntityEnableListener {
PRESPsServiceEntityEnableListenerTopicQueryEnableFnc
onTopicQueryEnable;
void* topicQueryEnableParam;
};
struct PRESPsServiceEntityFinalizeListener;
typedef void
(*PRESPsServiceEntityFinalizeListenerOnBeforeReaderFinalizeFnc)(
void* readerFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESPsServiceEntityFinalizeListenerOnBeforeWriterFinalizeFnc)(
void* writerFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESPsServiceEntityFinalizeListenerOnBeforeReaderGroupFinalizeFnc)(
void* readerGroupFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESPsServiceEntityFinalizeListenerOnBeforeWriterGroupFinalizeFnc)(
void* writerGroupFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESPsServiceEntityFinalizeListenerOnBeforeReadConditionFinalizeFnc)(
void* readConditionFinalizeParam,
void* userObject, struct REDAWorker *worker);
typedef void
(*PRESPsServiceEntityFinalizeListenerOnBeforeTopicQueryFinalizeFnc)(
void* topicQueryFinalizeParam,
void* userObject, struct PRESPsReader *reader, struct REDAWorker *worker);
struct PRESPsServiceEntityFinalizeListener {
PRESPsServiceEntityFinalizeListenerOnBeforeReaderFinalizeFnc
onBeforeReaderFinalizeFnc;
void* readerFinalizeParam;
PRESPsServiceEntityFinalizeListenerOnBeforeWriterFinalizeFnc
onBeforeWriterFinalizeFnc;
void* writerFinalizeParam;
PRESPsServiceEntityFinalizeListenerOnBeforeReaderGroupFinalizeFnc
onBeforeReaderGroupFinalizeFnc;
void* readerGroupFinalizeParam;
PRESPsServiceEntityFinalizeListenerOnBeforeWriterGroupFinalizeFnc
onBeforeWriterGroupFinalizeFnc;
void* writerGroupFinalizeParam;
PRESPsServiceEntityFinalizeListenerOnBeforeReadConditionFinalizeFnc
onBeforeReadConditionFinalizeFnc;
void* readConditionFinalizeParam;
PRESPsServiceEntityFinalizeListenerOnBeforeTopicQueryFinalizeFnc
onBeforeTopicQueryFinalizeFnc;
void* topicQueryFinalizeParam;
};
struct PRESPsServiceActivityListener;
typedef void
(*PRESPsServiceStatusListenerOnNewWriterLocatorPairFnc)(
void *parameter,
const struct MIGRtpsGuid *localWriterGuid,
const struct RTINetioLocator *locator,
struct REDAWorker *worker);
typedef void
(*PRESPsServiceStatusListenerOnDeletedWriterLocatorPairFnc)(
void *parameter,
const struct MIGRtpsGuid *localWriterGuid,
const struct RTINetioLocator *locator,
struct REDAWorker *worker);
typedef void
(*PRESPsServiceStatusListenerOnNewMatchingPairFnc)(
void *parameter,
const struct MIGRtpsGuid *localEntityGuid,
const struct MIGRtpsGuid *remoteEntityGuid,
struct REDAWorker *worker);
typedef void
(*PRESPsServiceStatusListenerOnDeletedMatchingPairFnc)(
void *parameter,
const struct MIGRtpsGuid *localEntityGuid,
const struct MIGRtpsGuid *remoteEntityGuid,
struct REDAWorker *worker);
struct PRESPsServiceStatusListener {
void *parameter;
PRESPsServiceStatusListenerOnNewWriterLocatorPairFnc
onNewWriterLocatorPair;
PRESPsServiceStatusListenerOnDeletedWriterLocatorPairFnc
onDeletedWriterLocatorPair;
PRESPsServiceStatusListenerOnNewMatchingPairFnc
onNewMatchingPair;
PRESPsServiceStatusListenerOnDeletedMatchingPairFnc
onDeletedMatchingPair;
};
struct PRESPsServiceListener {
struct PRESPsReaderGroupListener readerGroupListener;
struct PRESPsWriterGroupListener writerGroupListener;
};
/*e \ingroup PRESPsServiceBuiltinChannelForwarderModule
Forwarder for interacting with dds c builtin channel samples. It consist of
function pointers to DDS C Builtin Channel Forwarder implentation.
A Builtin Channel is a communication channel for providing a set of services:
- Each channel is identified by a channelTopicName and characterized by a
set of QoS.
- Each service is identified by a serviceId. For channels providing only one
service, the service-id is 0
To add a new channel and/or service the following changes are needed:
1) DDS C BuiltinChannelForwarder.c: add a new switch case for the
channelTopicName/serviceId in the forwarder functions. No changes needed
for unused forwarder functions
2) PsService.c: add a new switch case to the dispatchBuiltinChannelSample.
*/
#define PRESPsServiceBuiltinChannelForwarder PRESBuiltinChannelForwarder
struct PRESPsServiceProperty {
/*e various table properties */
struct REDATableProperty writerTable, readerTable,
remoteWriterTable, remoteReaderTable,
matchingRemoteWriterTable, matchingRemoteReaderTable,
writerGroupTable, readerGroupTable, remoteTopicQueryTable;
struct REDAFastBufferPoolGrowthProperty readConditionPool;
struct REDAFastBufferPoolGrowthProperty queryConditionPool;
/*e Destination fan-out max */
int destinationFanoutMax;
/*e reader group group data fast buffer setup */
int readerGroupGroupDataMaximumLength;
/*e writer group group data fast buffer setup */
int writerGroupGroupDataMaximumLength;
/*e reader user data fast buffer setup */
int readerUserDataMaximumLength;
/*e writer user data fast buffer setup */
int writerUserDataMaximumLength;
/*e topic data buffer setup */
int topicDataMaximumLength;
/*e Content filter property setup
Maximum length of the filter property */
int contentFilterPropertyMaxLength;
/*e Size of user object to be stored in writer group */
int writerGroupUserObjectSize;
/*e Alignment user object to be stored in writer group */
int writerGroupUserObjectAlignment;
/*e Size of user object to be stored in writer */
int writerUserObjectSize;
/*e Alignment of user object to be stored in writer */
int writerUserObjectAlignment;
/*e Size of user object to be stored in reader group */
int readerGroupUserObjectSize;
/*e Alignment user object to be stored in reader group */
int readerGroupUserObjectAlignment;
/*e Size of user object to be stored in reader */
int readerUserObjectSize;
/*e Alignment of user object to be stored in reader */
int readerUserObjectAlignment;
/*e Size of user object to be stored in read condition */
int readConditionUserObjectSize;
/*e Alignment user object to be stored in read condition */
int readConditionUserObjectAlignment;
/*e Size of user object to be stored in query condition */
int queryConditionUserObjectSize;
/*e Alignment user object to be stored in query condition */
int queryConditionUserObjectAlignment;
/*e Size of user object to be stored in index condition */
int indexConditionUserObjectSize;
/*e Alignment user object to be stored in index condition */
int indexConditionUserObjectAlignment;
/*e The maximum rate at which to check for liveliness of remote writers.
The smaller value between this and the minimum liveiness lease
duration among all local readers will be used as the actual purge
period.
*/
struct RTINtpTime maxPurgePeriod;
/*e Maximum number of properties associated to a data writer*/
int writerMaxPropertyLength;
/*e Maximum string length of the properties associated to a data writer.
The string length is defined as the cumulative length in bytes
(not including NULL terminated char) of all
the pair (name,value) associated to the writer properties */
int writerMaxPropertyStringLength;
/*e Maximum number of properties associated to a data reader*/
int readerMaxPropertyLength;
/*e Maximum string length of the properties associated to a data reader.
The string length is defined as the cumulative length in bytes
(not including NULL terminated char) of all
the pair (name,value) associated to the reader properties */
int readerMaxPropertyStringLength;
/*e Maximum number of data tags associated with a data writer */
int writerMaxDataTagLength;
/*e Maximum string length of the data tags associated with a data writer.
* The string length is defined as the cumulative length in bytes
* (not including NULL terminated char) of all
* the pair (name, value) associated with the writer data tags.
*/
int writerMaxDataTagStringLength;
/*e Maximum number of data tags associated with a data reader */
int readerMaxDataTagLength;
/*e Maximum string length of the data tags associated with a data reader.
* The string length is defined as the cumulative length in bytes
* (not including NULL terminated char) of all
* the pair (name, value) associated with the reader data tags.
*/
int readerMaxDataTagStringLength;
/* Maximum length of Locator Filter Sequence */
int locatorFilterSeqMaxLength;
/* Maximum length of Locator Filter Expression */
int locatorFilterExpressionMaxLength;
int maxEndpointGroups;
/*e Maximum string length of all the endpoint groups associated
with availabilityQosPolicy.
The string length is defined as the cumulative length in bytes
(not including NULL terminated char) of all role names
associated with the groups.
*/
int maxEndpointGroupCumulativeCharacters;
};
/*e \ingroup PRESPsServiceModule
Default value of maximum length of groupData
*/
#define PRES_PS_GROUP_DATA_MAXIMUM 256
/*e \ingroup PRESPsServiceModule
Default value of maximum length of userData
*/
#define PRES_PS_USER_DATA_MAXIMUM 256
/*e \ingroup PRESPsServiceModule
Default value of maximum length of property list
*/
#define PRES_PS_PROPERTY_LIST_MAXIMUM 32
/*e \ingroup PRESPsServiceModule
Default value of maximum length of property string
*/
#define PRES_PS_PROPERTY_STRING_MAXIMUM 1024
/*e \ingroup PRESPsServiceModule
Default value of maximum length of data tag list
*/
#define PRES_PS_DATA_TAG_LIST_MAXIMUM 0
/*e \ingroup PRESPsServiceModule
Default value of maximum length of data tag string
*/
#define PRES_PS_DATA_TAG_STRING_MAXIMUM 0
/*e \ingroup PRESPsServiceModule
Default value of maximum cumulative length for partition
*/
#define PRES_PS_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_DEFAULT 0
/*e \ingroup PRESPsServiceModule
Default value of maximum length of property list
*/
#define PRES_PS_ENDPOINT_GROUPS_MAXIMUM 32
/*e \ingroup PRESPsServiceModule
* Default value of PRESPsServiceProperty instances.
*/
#define PRES_PS_SERVICE_PROPERTY_DEFAULT { \
/* writerTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* readerTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* remoteWriterTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* remoteReaderTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* matchingRemoteWriterTable */ \
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* matchingRemoteReaderTable */ \
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* writerGroupTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* readerGroupTable */ \
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* remoteTopicQueryTable */ \
{{1,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
/* readConditionPool */ \
{4, REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, \
/* queryConditionPool */ \
{4, REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, \
PRES_PARTICIPANT_IPADDRESS_COUNT_MAX, /* destinationFanoutMax */ \
PRES_PS_GROUP_DATA_MAXIMUM, /* writerGroupGroupDataMaximumLength */ \
PRES_PS_GROUP_DATA_MAXIMUM, /* readerGroupGroupDataMaximumLength */ \
PRES_PS_USER_DATA_MAXIMUM, /* writerUserDataMaximumLength */ \
PRES_PS_USER_DATA_MAXIMUM, /* readerUserDataMaximumLength */ \
PRES_PARTICIPANT_TOPIC_DATA_MAXIMUM, /* topicDataMaximumLength */ \
PRES_CONTENT_FILTER_PROPERTY_LEN_MAX, \
0, /* writerGroupUserObjectSize */ \
0, /* writerGroupUserObjectAlignment */ \
0, /* writerUserObjectSize */ \
0, /* writerUserObjectAlignment */ \
0, /* readerGroupUserObjectSize */ \
0, /* readerGroupUserObjectAlignment */ \
0, /* readerUserObjectSize */ \
0, /* readerUserObjectAlignment */ \
0, /* readConditionUserObjectSize */ \
0, /* readConditionUserObjectAlignment */ \
0, /* queryConditionUserObjectSize */ \
0, /* queryConditionUserObjectAlignment */ \
0, /* indexConditionUserObjectSize */ \
0, /* indexConditionUserObjectAlignment */ \
{60, 0}, /* maxPurgePeriod */ \
PRES_PS_PROPERTY_LIST_MAXIMUM, /* writerMaxPropertyLength */ \
PRES_PS_PROPERTY_STRING_MAXIMUM, /* writerMaxPropertyStringLength */ \
PRES_PS_PROPERTY_LIST_MAXIMUM, /* readerMaxPropertyLength */ \
PRES_PS_PROPERTY_STRING_MAXIMUM, /* readerMaxPropertyStringLength */ \
PRES_PS_DATA_TAG_LIST_MAXIMUM, /* writerMaxDataTagLength */ \
PRES_PS_DATA_TAG_STRING_MAXIMUM, /* writerMaxDataTagStringLength */ \
PRES_PS_DATA_TAG_LIST_MAXIMUM, /* readerMaxDataTagLength */ \
PRES_PS_DATA_TAG_STRING_MAXIMUM, /* readerMaxDataTagStringLength */ \
PRES_LOCATOR_FILTER_DEFAULT_SEQ_LEN_MAX, \
PRES_LOCATOR_FILTER_DEFAULT_EXPRESSION_LEN_MAX, \
PRES_PS_ENDPOINT_GROUPS_MAXIMUM, \
PRES_PS_ENDPOINT_GROUP_MAXIMUM_CUMULATIVE_LENGTH_LIMIT \
}
struct PRESParticipant;
struct PRESPsService;
struct PRESLoanedSampleInfoListener;
struct PRESPsServiceDescription {
/* @brief The participant the service will be registered with. */
struct PRESParticipant * participant;
/* @brief Network interface configuration */
struct RTINetioConfigurator * configuratorIn;
/* @brief Property used to configure the service. */
struct PRESPsServiceProperty property;
/* @brief Worker factory. Optional */
struct REDAWorkerFactory * workerFactory;
/* @brief Database for saving entity information.*/
struct REDADatabase * database;
/* @brief Clock to be used to get time.*/
struct RTIClock * clock;
/* @brief Clock used to get source/reception timestamps. */
struct RTIClock * timestampClock;
/* @brief Exclusive area to be used for all tables. */
struct REDAExclusiveArea * tableEa;
/* @brief */
struct REDAExclusiveArea * blockingWriteEa;
/* @brief Listener for monitoring events Optional. */
const struct PRESPsServiceStatusListener * statusListener;
/* @brief Enabler listener to receive notifications when local entities
are enabled. Optional. */
const struct PRESPsServiceEntityEnableListener * enableListener;
/* @brief Finalize listener to receive notifications when local entities
are deleted. Optional. */
const struct PRESPsServiceEntityFinalizeListener * finalizeListener;
/* @brief */
const struct PRESLoanedSampleInfoListener * sampleInfoListener;
/* @brief Service listener. Optional. */
const struct PRESPsServiceListener *listener;
/* @brief Indicates the communication status changes be informed through
* the listener if listener is not NULL.*/
PRESStatusKindMask listenerMask;
/* @brief Builtin channel forwarder for interacting with DDSC builtin
* channels from PRES. */
const struct PRESPsServiceBuiltinChannelForwarder *builtinChannelForwarder;
};
#define PRESPsServiceDescription_INITIALIZER {\
NULL, /* participant */\
NULL, /* configuratorIn */ \
PRES_PS_SERVICE_PROPERTY_DEFAULT, /* property */\
NULL, /* workerFactory */\
NULL, /* database */\
NULL, /* clock */\
NULL, /* timestampClock */\
NULL, /* tableEa */\
NULL, /* blockingWriterEa */\
NULL, /* statusListener */\
NULL, /* enableListener */\
NULL, /* finalizeListener */\
NULL, /* sampleInfoListener */\
NULL, /* listener */\
0, /* mask */\
NULL /* builtinChannelForwarder */\
}
extern PRESDllExport
struct PRESPsService * PRESPsService_new(
struct PRESPsServiceDescription * serviceDescription,
struct REDAWorker *worker);
extern PRESDllExport struct PRESPsService *
PRESPsService_new_deprecated(struct PRESParticipant *participant,
struct RTINetioConfigurator* configuratorIn,
struct PRESPsServiceProperty *property,
struct REDAWorkerFactory *workerFactory,
struct REDADatabase *db,
struct RTIClock *clock, struct REDAExclusiveArea *tableEa,
struct REDAExclusiveArea *remoteRecordEa,
struct REDAExclusiveArea *blockingWriteEa,
const struct PRESPsServiceStatusListener *statusListener,
const struct PRESPsServiceEntityFinalizeListener
*finalizeListener,
const struct PRESLoanedSampleInfoListener *sampleInfoListener,
const struct PRESPsServiceListener *listener,
PRESStatusKindMask listenerMask,
struct REDAWorker *worker);
extern PRESDllExport
void PRESPsService_getProperty(
struct PRESPsService *me,
struct PRESPsServiceProperty *property);
extern PRESDllExport void
PRESPsService_setStatusListener(
struct PRESPsService *me,
const struct PRESPsServiceStatusListener *statusListener,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_getRemoteReaderProperty(
struct PRESPsService* me, int *failReason,
struct PRESPsRemoteReaderProperty *property,
const struct PRESPsWriter *localWriter,
const struct MIGRtpsGuid *remoteReaderGuid,
struct REDAWorker* worker);
extern PRESDllExport
void PRESPsService_returnRemoteReaderProperty(
struct PRESPsService* me,
struct PRESPsRemoteReaderProperty *property,
struct REDAWorker* worker);
extern PRESDllExport
void PRESContentFilterProperty_finalize(
struct PRESContentFilterProperty *self);
extern PRESDllExport
RTIBool PRESPsService_getRemoteWriterProperty(
struct PRESPsService* me, int *failReason,
struct PRESPsRemoteWriterProperty *property,
const struct MIGRtpsGuid *localReaderGuid,
const struct MIGRtpsGuid *remoteWriterGuid,
struct REDAWorker* worker);
extern PRESDllExport
RTIBool PRESPsService_remoteWriterIsAlive(
struct PRESPsService *self,
RTIBool *alive,
int *failReason,
const struct MIGRtpsGuid *localReaderGuid,
const struct MIGRtpsGuid *remoteWriterGuid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_remoteReaderIsActive(
struct PRESPsService *self,
RTIBool *active,
int *failReason,
const struct MIGRtpsGuid *localWriterGuid,
const struct MIGRtpsGuid *remoteReaderGuid,
RTIBool logMatchError,
struct REDAWorker *worker);
extern PRESDllExport
void PRESPsService_returnRemoteWriterProperty(
struct PRESPsService* me,
struct PRESPsRemoteWriterProperty *property,
struct REDAWorker* worker);
extern PRESDllExport
int PRESPsService_getUserGroupCount(struct PRESPsService *service,
MIGRtpsRWType type);
extern PRESDllExport RTI_INT32 PRESPsService_getUserEndpointCount(
struct PRESPsService *service,
MIGRtpsRWType type);
extern PRESDllExport RTI_UINT64
PRESPsService_getRejectedByLimitUserEndpointCount(
struct PRESPsService *service,
MIGRtpsRWType type);
extern PRESDllExport RTIBool PRESPsService_lockAllGroups(
struct PRESPsService *service,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESPsService_unlockAllGroups(
struct PRESPsService *service,
int *failReason,
struct REDAWorker *worker);
#define PRESPsServiceIterator REDACursor
extern PRESDllExport
struct PRESPsServiceIterator *
PRESPsService_getIterator(struct PRESPsService *service,
int *failReason,
MIGRtpsRWType type,
struct REDAWorker *worker);
extern PRESDllExport
void PRESPsService_returnIterator(struct PRESPsService *me,
struct PRESPsServiceIterator *iter);
extern PRESDllExport
struct PRESGroup* PRESPsService_getNextGroup(
struct PRESPsService *me,
int *failReason,
struct PRESPsServiceIterator *iter,
PRESGroupSuffix groupSuffix,
struct REDAWorker *worker);
extern PRESDllExport struct PRESLocalReaderIterator *
PRESPsService_getLocalReaderIterator(
struct PRESService *service,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport void PRESLocalReaderIterator_return(
struct PRESLocalReaderIterator *iter);
extern PRESDllExport struct PRESPsReader *
PRESLocalReaderIterator_getNextLocalReader(
struct PRESLocalReaderIterator *iter,
int *failReason,
RTIBool *isAnonymous,
RTIBool *isReliable,
struct REDAWorker *worker);
extern PRESDllExport struct PRESLocalWriterIterator *
PRESPsService_getLocalWriterIterator(
struct PRESService *service,
int *failReason,
struct REDAWorker *worker);
extern PRESDllExport void PRESLocalWriterIterator_return(
struct PRESLocalWriterIterator *iter);
extern PRESDllExport struct PRESPsWriter *
PRESLocalWriterIterator_getNextLocalWriter(
struct PRESLocalWriterIterator *iter,
int *failReason,
RTIBool *isAnonymous,
RTIBool *isReliable,
struct REDAWorker *worker);
#define PRESRemoteWriterIterator REDACursor
extern PRESDllExport
RTIBool PRESPsService_beginGetRemoteWriters(
struct PRESPsService *self,
struct PRESRemoteWriterIterator ** iter,
RTI_INT32 *maxRemoteWriters,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_endGetRemoteWriters(
struct PRESPsService *self,
struct PRESRemoteWriterIterator * iter,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_getNextRemoteWriter(
struct PRESPsService *self,
int *failReason,
RTIBool includeLocalEndpoint,
struct PRESRemoteWriterIterator *iter,
struct PRESInstanceHandle *handle,
struct REDAWorker *worker);
#define PRESRemoteReaderIterator REDACursor
extern PRESDllExport
RTIBool PRESPsService_beginGetRemoteReaders(
struct PRESPsService *self,
struct PRESRemoteReaderIterator ** iter,
RTI_INT32 *maxRemoteReaders,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_endGetRemoteReaders(
struct PRESPsService *self,
struct PRESRemoteReaderIterator * iter,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_getNextRemoteReader(
struct PRESPsService *self,
int *failReason,
RTIBool includeLocalEndpoint,
struct PRESRemoteReaderIterator *iter,
struct PRESInstanceHandle *handle,
struct REDAWorker *worker);
struct PRESPsWriterStatisticsListener;
struct PRESPsReaderStatisticsListener;
typedef void
(*PRESPsWriterStatisticsListenerOnMatchedReaderStatisticsRequestCallback)
(struct PRESPsWriterStatisticsListener *presStatsListener,
struct PRESPsWriter *presWriter,
struct PRESPsWriterMatchedReaderStatistics *presStats,
const struct MIGRtpsGuid *matchedReader,
struct REDAWorker *worker);
typedef void
(*PRESPsWriterStatisticsListenerOnMatchedDestinationStatisticsRequestCallback)
(struct PRESPsWriterStatisticsListener *presStatsListener,
struct PRESPsWriter *presWriter,
struct PRESPsWriterMatchedDestinationStatistics *presStats,
const struct RTINetioLocator *matchedLocator,
struct REDAWorker *worker);
struct PRESStatisticsListener {
void *listener_data;
};
struct PRESPsWriterStatisticsListener {
/* mirrors DDS_C as_listener struct, but exposed as ptr */
struct PRESStatisticsListener as_listener;
PRESPsWriterStatisticsListenerOnMatchedReaderStatisticsRequestCallback
onMatchedReaderStatisticsRequest;
PRESPsWriterStatisticsListenerOnMatchedDestinationStatisticsRequestCallback
onMatchedDestinationStatisticsRequest;
};
typedef void
(*PRESPsReaderStatisticsListenerOnMatchedWriterStatisticsRequestCallback)
(struct PRESPsReaderStatisticsListener *presStatsListener,
struct PRESPsReader *presReader,
struct PRESPsReaderMatchedWriterStatistics *presStats,
const struct MIGRtpsGuid *matchedWriter,
struct REDAWorker *worker);
struct PRESPsReaderStatisticsListener {
struct PRESStatisticsListener as_listener;
PRESPsReaderStatisticsListenerOnMatchedWriterStatisticsRequestCallback
onMatchedWriterStatisticsRequest;
};
extern PRESDllExport
RTIBool PRESPsService_registerWriterHistoryPlugin(
struct PRESPsService *me,
int *failReason,
const char * pluginName,
struct NDDS_WriterHistory_Plugin * plugin,
struct REDAWorker *worker);
extern PRESDllExport struct NDDS_WriterHistory_Plugin *
PRESPsService_getWriterHistoryPlugin(
struct PRESPsService *me,
const char * name,
struct REDAWorker *worker);
extern PRESDllExport void
PRESPsService_setSpinPerMicrosecond(
struct PRESPsService *me,
RTI_UINT64 spinPerMicrosecond);
extern PRESDllExport
RTIBool PRESPsService_getLocalEndpointPropertyChangeEpoch(
struct PRESPsService *me,
int * failReason,
RTI_INT64 * propertyChangeEpoch,
struct PRESLocalEndpoint * endpoint,
struct REDAWorker * worker);
extern PRESDllExport
MIGRtpsObjectId PRESPsService_getUniqueObjectId(
struct PRESPsService *service,
MIGRtpsObjectSuffix kind,
int locatorFilterSeqMaxLength,
const struct RTIOsapiRtpsGuid *participantGuid,
struct PRESUniqueObjectKeyGenerator *objectKeyGenerator,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_dispatchLocatorReachability(
struct PRESPsService *me,
const struct MIGRtpsGuidPrefix *participantGuidPrefix,
const struct REDAInlineList *reachableLocatorList,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_dispatchInstanceStateResponse(
struct PRESParticipant *participant,
const struct NDDS_WriterHistory_InstanceStateDataResponse *response,
const struct MIGRtpsGuid *readerGuid,
const struct MIGRtpsGuid *writerGuid,
struct REDAWorker *worker);
extern PRESDllExport RTI_INT32 PRESPsService_getMatchedEndpointCountByOid(
struct PRESPsService *me,
MIGRtpsObjectId oid,
struct REDAWorker *worker);
extern PRESDllExport RTIBool PRESPsService_isInstanceRegisteredToReader(
struct PRESPsService *me,
const struct PRESInstanceHandle *instanceHandle,
MIGRtpsObjectId oid,
struct REDAWorker *worker);
extern PRESDllExport
RTIBool PRESPsService_getRemoteEndpointUnicastLocators(
struct PRESPsService *me,
struct PRESLocatorDerivableQosPolicy *unicastLocator,
const struct MIGRtpsGuid *remoteEndpointGuid,
struct REDAWorker *worker);
extern PRESDllExport RTI_INT32 PRESPsService_getResendEventLocatorListCount(
const struct PRESPsService *service,
RTIBool useMulticastList);
extern PRESDllExport RTIBool PRESPsService_writerResendToDestinations(
struct PRESPsService *service,
struct REDAWeakReference *writerWeakReference,
struct REDAInlineList *destinations,
struct REDAWorker *worker);
#ifdef __cplusplus
} /* extern "C" */
#endif
#include "pres/pres_psService_impl.h"
#endif /* pres_psService_h */