2900 lines
113 KiB
C
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 */
|