/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */ /* * @(#)pres_readerQueue.h generated by: makeheader Tue Apr 7 17:39:30 2026 * * built from: readerQueue.ifc */ #ifndef pres_readerQueue_h #define pres_readerQueue_h #include "reda/reda_fastBuffer.h" #include "reda/reda_skiplist.h" #include "mig/mig_rtps.h" #include "reda/reda_sequenceNumber.h" #include "reda/reda_skiplist.h" #ifndef property_propertyNames_h #include "property/property_propertyNames.h" #endif #include "pres/pres_common.h" #ifdef __cplusplus extern "C" { #endif #define PRES_READER_QUEUE_INLINE_QOS_FLAG_NONE (0x00000000U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_DURABILITY (0x00000001U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_PRESENTATION (0x00000002U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_DEADLINE (0x00000004U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_LATENCY_BUDGET (0x00000008U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_OWNERSHIP (0x00000010U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_OWNERSHIP_STRENGTH (0x00000020U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_LIVELINESS (0x00000040U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_PARTITION (0x00000080U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_RELIABILITY (0x00000100U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_TRANSPORT_PRIORITY (0x00000200U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_LIFESPAN (0x00000400U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_DESTINATION_ORDER (0x00000800U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_COHERENT_SET (0x00001000U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_FILTER_SIGNATURE (0x00002000U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_GROUP_COHERENT_SET (0x00004000U) #define PRES_READER_QUEUE_INLINE_QOS_FLAG_UNKNOWN (0x80000000U) #define PRES_READER_QUEUE_STATE_ODBC_DSN_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_ODBC_DSN #define PRES_READER_QUEUE_STATE_ODBC_USERNAME_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_ODBC_USERNAME #define PRES_READER_QUEUE_STATE_ODBC_PASSWORD_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_ODBC_PASSWORD #define PRES_READER_QUEUE_STATE_ODBC_DRIVER_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_ODBC_DRIVER #define PRES_READER_QUEUE_STATE_ODBC_DRIVER_PTR_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_ODBC_DRIVER_PTR #define PRES_READER_QUEUE_STATE_RESTORE_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_RESTORE #define PRES_READER_QUEUE_STATE_FILTER_REDUNDANT_SAMPLES PROPERTY_NAME_DDS_DATA_READER_STATE_FILTER_REDUNDANT_SAMPLES #define PRES_READER_QUEUE_STATE_FILTER_OLD_SAMPLES PROPERTY_NAME_DDS_DATA_READER_STATE_FILTER_OLD_SAMPLES #define PRES_READER_QUEUE_STATE_CHECKPOINT_FREQUENCY_PROPERTY PROPERTY_NAME_DDS_DATA_READER_STATE_CHECKPOINT_FREQUENCY #define PRES_READER_QUEUE_STATE_PERSISTENCE_SERVICE_REQUEST_DEPTH PROPERTY_NAME_DDS_DATA_READER_STATE_PERSISTENCE_SERVICE_REQUEST_DEPTH #define PRES_READER_QUEUE_MAX_VIRTUAL_WRITERS_PER_SAMPLE 5 #define PRES_READER_QUEUE_UNKNOWN_COHERENT_SET_STATUS 0 #define PRES_READER_QUEUE_INCOMPLETE_COHERENT_SET_STATUS 1 #define PRES_READER_QUEUE_COMPLETE_COHERENT_SET_STATUS 2 #define PRES_READER_QUEUE_OK (0) #define PRES_READER_QUEUE_FAILURE_INTERNAL (1) #define PRES_READER_QUEUE_FAILURE_NO_INSTANCE (2) #define PRES_READER_QUEUE_FAILURE_OUT_OF_RESOURCES (3) #define PRES_READER_QUEUE_FAILURE_DECODE (4) typedef struct PRESReaderQueueStatus { RTI_INT32 polledCount; RTI_INT32 totalSampleCount; RTI_INT32 sampleCount; RTIBool isPurgeRemoteNotAliveWriterEventScheduled; } PRESReaderQueueStatus; #define PRESReaderQueueStatus_INITIALIZER { \ 0, /* polledCount */ \ 0, /* totalSampleCount */ \ 0, /* sampleCount */ \ RTI_FALSE /* isPurgeRemoteNotAliveWriterEventScheduled */ \ } typedef struct PRESReaderQueueRemoteWriterQueueStatus { RTI_INT32 totalSampleCount; RTI_INT32 sampleCount; } PRESReaderQueueRemoteWriterQueueStatus; #define PRESReaderQueueRemoteWriterQueueStatus_INITIALIZER { \ 0, /* totalSampleCount */ \ 0 /* sampleCount */ \ } typedef enum PRESVirtualReliabilityKind { PRES_BEST_EFFORT_VIRTUAL_RELIABILITY, PRES_DUP_FILTER_VIRTUAL_RELIABILITY, PRES_RELIABLE_VIRTUAL_RELIABILITY } PRESVirtualReliabilityKind; struct PRESReaderQueue; struct PRESReaderQueueVirtualWriterList; struct PRESReaderQueueVirtualWriter; struct PRESReaderQueuePhysicalWriter; struct PRESReaderQueueCoherentSetInfo { struct REDASequenceNumber setFirstSn; struct REDASequenceNumber groupSetFirstSn; int status; }; #define PRESReaderQueueCoherentSetInfo_INITIALIZER { \ REDA_SEQUENCE_NUMBER_UNKNOWN, \ REDA_SEQUENCE_NUMBER_UNKNOWN, \ PRES_READER_QUEUE_UNKNOWN_COHERENT_SET_STATUS \ } extern PRESDllVariable const struct PRESReaderQueueCoherentSetInfo PRES_READER_QUEUE_COHERENT_SET_INFO_DEFAULT; struct PRESReaderQueueEndCoherentSetInfo { struct REDASequenceNumber groupSetFirstSn; int sampleCount; }; #define PRESReaderQueueEndCoherentSetInfo_INITIALIZER { \ REDA_SEQUENCE_NUMBER_UNKNOWN, \ -1 \ } extern PRESDllVariable const struct PRESReaderQueueEndCoherentSetInfo PRES_READER_QUEUE_END_COHERENT_SET_INFO_DEFAULT; struct PRESReaderQueuePhysicalSample { struct PRESReaderQueuePhysicalWriter *physicalWriter; /* * This is a pointer to the coherent set info in the entry of * the keyed/unkeyed queues */ struct PRESReaderQueueCoherentSetInfo *coherentSetInfo; /* * This is the difference between the physical SN of this sample and * the previous sample added to the virtual writer sample queue. * * This difference is used to determine if a coherent set is incomplete * or not. */ RTI_UINT32 physicalSnOffsetWithPrevious; /* If set, this is an end coherent set sample */ struct PRESReaderQueueEndCoherentSetInfo *endCoherentSetInfo; void *sample; }; struct PRESReaderQueueVirtualSample { struct REDAInlineListNode _node; struct REDASequenceNumber sn; /* Contains the coherent set sn of a group coherent set */ struct REDASequenceNumber groupSetFirstSn; /* Indicates if this sample is part of an incomplete coherent set */ int groupSetStatus; /* Indicates when the virtual sample is asserted */ struct RTINtpTime creationTime; /* Indicates whether or not the data availability timeout is expired for a virtual sample */ RTIBool dataAvailabilityTimeoutElapsed; /* * List of physical physical samples associated with the virtual sample. * * We need to store the list of all the samples here because we will have * to update the durable reader state of the virtual writers associated * with all the samples once we go into the output queue. * * We will also use the list of physical samples to see if all the * physical writers in a group have committed a group coherent set in the * virtual writer queue corresponding to the group. * */ int sampleCount; struct PRESReaderQueuePhysicalSample *samples; /* Pointer back to the virtual writer */ struct PRESReaderQueueVirtualWriter * virtualWriter; RTIBool keyed; }; struct PRESReaderQueuePhysicalWriter { struct REDAInlineListNode _node; struct REDAInlineListUserDataNode _unconfirmedAppAckNode; /*i Virtual GUID */ struct MIGRtpsGuid guid; /* This is the last virtual sequence number provided by the physical writer to the virtual queue */ struct REDASequenceNumber lastReceivedVirtualSn; /* * The last asserted sequence number for this physical writer * This sequence number is not the virtual sequence number for the * virtual writer to which this physical writer belongs but the * sequence number of the samples published by the PhysicalWriter. */ struct REDASequenceNumber lastAddedPhysicalSn; /* This is the last virtual sequence number that the physical writer has for this virtual queue */ struct REDASequenceNumber lastAvailableVirtualSn; /* This is the last available sequence number for the group of this physical writer. This sequence number is exercised with GROUP access_scope */ struct REDASequenceNumber lastGroupAvailableVirtualSn; /* Next physical sequence number committed from the remote writer queue */ const struct REDASequenceNumber * nextCommittalSn; /* * The remote writer queue for this physical writer in either * the PsReaderQueue (PRESPsReaderQueueRemoteWriterQueue) * or CstReaderCollator (PRESCstReaderCollatorRemoteWriterQueue) * */ void *writer; /* Pointer back to the virtual writer */ struct PRESReaderQueueVirtualWriter * virtualWriter; /* The application-level ack state of this virtual writer for this physical writer. This member may belong to the list in writer->appAckState */ struct MIGRtpsAppAckPerVirtualWriter appAckState; RTIBool appAckEnabled; const char * roleName; /* This is a temporary value used by the reader queues */ RTIBool processed; /* Indicates if the group associated with this physical writer has been discovered */ RTIBool discoveredGroup; /* Service QoS policy */ struct PRESServiceQosPolicy serviceQos; /* Indicates if the physical writer is keyed or not */ RTIBool keyed; }; struct PRESReaderQueueVirtualWriterInlineListNode { struct REDAInlineListNode node; struct PRESReaderQueueVirtualWriter * data; }; struct PRESReaderQueueVirtualWriterAppAckState { /* Node to the inline list in the virtual writer list */ struct PRESReaderQueueVirtualWriterInlineListNode _pendingAppAckListNode; /* A virtual writer will be added to the AppAck update inline list * when an AppAck Conf message is received a samples are moved * from the pendingAppAckIntervalList to the * appAckIntervalList */ struct PRESReaderQueueVirtualWriterInlineListNode _updateAppAckListNode; /* List of sequence number intervals app-ack'ed for this virtual writer This member is referenced one or more times by all the PRESReaderQueuePhysicalWriter::appAckState */ struct REDASequenceNumberIntervalList appAckIntervalList; /* List of sequence numbers intervals that * must be added into appAckIntervalList once the current * AppAck message is acknowledged by all associated * physical writers or app_ack_period expires */ struct REDASequenceNumberIntervalList pendingAppAckIntervalList; /* List of sequence number intervals for the samples received from this virtual writer that have been read by the application but not yet app-ack'ed by acknowledge_all Once the sequence numbers are ACKed they will be moved to pendingAppAckIntervalList and from there to appAckIntervalList */ struct REDASequenceNumberIntervalList readSampleIntervalList; /* List of sequence numbers that must be persisted * into disk * * This is a combination of appAckIntervalList + pendingAppAckIntervalList */ struct REDASequenceNumberIntervalList persistAppAckIntervalList; RTIBool appAckIntervalListInitialized; RTI_UINT32 currentAppAckEpoch; struct REDAInlineList unconfirmedAppAckPhysicalWriterList; /* Indicates that this virtual writer is waiting for an AppAck confirmation * message. In combination with unconfirmedAppAckPhysicalWriterCount this * variable is used to determine when to merge the pendingAppAck inti the appAck * list */ RTIBool waitingForAppAckConf; }; struct PRESReaderQueueVirtualWriter { struct REDAInlineListNode _node; /* Back pointer to the virtual writer list */ struct PRESReaderQueueVirtualWriterList * virtualWriterList; /* This is the time where the endpoint availability timeout is posted */ struct RTINtpTime endpointAvailabilityStartTime; /* Indicates if the endpoint availability timeout is elapsed for this virtual writer*/ RTIBool endpointAvailabilityTimeoutElapsed; /**/ struct RTINtpTime initialDataAvailabilityStartTime; RTIBool initialDataAvailabilityTimeoutElapsed; /*i Virtual GUID */ struct MIGRtpsGuid guid; struct MIGRtpsKeyHash instanceKeyHash; struct REDASequenceNumber lastComittedSn; struct REDASequenceNumber lastApplicationProcessedSn; struct REDASequenceNumber lastRestoredListSn; int batchCount; /* List of remote writers providing samples for this virtual writer */ struct REDASkiplist physicalWriterList; /* List of PRESReaderQueueVirtualSample */ struct REDASkiplist sampleList; /* Iterator node */ const struct REDASkiplistNode * virtualSampleNode; /* Indicates whether or not the virtual writer is synchronized */ RTIBool failedCommittal; /* Pointers for the retry list */ struct PRESReaderQueueVirtualWriter *next; struct PRESReaderQueueVirtualWriter *prev; struct PRESReaderQueueVirtualWriterAppAckState *appAckState; struct PRESSequenceEndpointGroup _requiredMatchedEndpointGroups; RTIBool _matchedEndpoint; /* List of queues affected by a virtual committal operation */ struct REDAInlineList committalInfoList; struct PRESPresentationQosPolicy presentationQos; RTI_UINT32 tmpSampleCount; /* * This is the sequence number of the last group coherent set that was * fully received */ struct REDASequenceNumber lastGroupSetFirstSn; }; struct PRESReaderQueueVirtualReader; struct PRESReaderQueueVirtualReaderProperty { RTIBool restore; int checkpointFrequency; struct PRESDestinationOrderQosPolicy destinationOrderQos; /*e In the database table for the reader, the max length of the varbinary that contains the acked seq number intervals */ int appAckSnIntervalColumnMaxSize; }; #define PRESReaderQueueVirtualReaderProperty_INITIALIZER { \ RTI_FALSE, \ 1, \ {PRES_BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, \ PRES_INSTANCE_SCOPE_DESTINATIONORDER_QOS, \ {30, 0}}, \ 32767 \ } struct PRESReaderQueueVirtualWriterListInstanceEntry { struct MIGRtpsKeyHash instanceKeyHash; struct RTINtpTime lastSourceTimestamp; }; struct PRESReaderQueueVirtualWriterListStateProperty { struct REDAFastBufferPoolGrowthProperty virtualWriterCount; /**e * Controls whether to keep only the payload of the most-recently * acknowledged sample, or to retain all acknowledged payloads. * * This behavior is controlled by the * "dds.data_reader.appack_keep_last_payload" property. */ REDASequenceNumberIntervalListPayloadHistory appAckPayloadHistory; struct PRESAvailabilityQosPolicy availabilityQosPolicy; struct PRESPresentationQosPolicy presentationQos; struct PRESReliabilityQosPolicy reliabilityQos; /*e Maximum numbers of physical writers associated with a virtual sample */ int maximalPhysicalWriterPerVirtualSampleCount; }; #define PRESReaderQueueVirtualWriterListStateProperty_INITIALIZER { \ {32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ REDA_SEQUENCE_NUMBER_INTERVAL_LIST_PAYLOAD_HISTORY_KEEP_ALL, \ PRES_AVAILABILITY_QOS_POLICY_DEFAULT, \ PRES_PRESENTATION_QOS_POLICY_DEFAULT, \ PRES_RELIABLE_RELIABILITY_QOS_POLICY_DEFAULT, \ PRES_READER_QUEUE_MAX_VIRTUAL_WRITERS_PER_SAMPLE \ } struct PRESReaderQueueVirtualWriterListProperty { /*e Control growth in number of physical writers */ struct REDAFastBufferPoolGrowthProperty physicalWriterCount; /*e Control growth in number of samples within a virtual writer */ struct REDAFastBufferPoolGrowthProperty sampleCount; /*e Control growth in number of SN intervals within a virtual writer */ struct REDAFastBufferPoolGrowthProperty sequenceNumberIntervalCount; struct PRESReaderQueueVirtualWriterListStateProperty state; /*e Determined by the DataReader resource limit qos */ int appAckUserDataMaxLength; /*e*/ struct REDAFastBufferPoolGrowthProperty readerCount; /*e Allocation settings applied to remote DataWriters in the participant containing this virtual writer list */ struct REDAFastBufferPoolGrowthProperty discoveryRemoteWriterCount; /* */ struct PRESDurabilityQosPolicy durabilityQos; /* */ struct PRESServiceQosPolicy serviceQos; /* */ PRESVirtualReliabilityKind virtualReliabilityKind; }; struct PRESReaderQueueSecurity { /* Participant used for interacting to the security forwarder. */ struct PRESParticipant *participant; /* Key material for decoding. */ void *receiverCryptoHandle; /* * Buffer used for decoding the current sample. The memory associated to * it is provided by the PsReaderQueue/CstCollator getSampleBuffer. */ struct REDABuffer decodedSampleBuffer; }; #define PRES_READER_QUEUE_SECURITY_DEFAULT \ { \ NULL, /* participant */ \ NULL, /* receiverCryptoHandle */ \ REDA_BUFFER_INVALID /* decodedSampleBuffer */ \ } struct PRESReaderQueueStateProperty { /* * Pool buffer threshold for sample serialization. * UNLIMITED by default or set by user via the property * NDDS_DRHISTORY_MEMORYMANAGER_FASTPOOL_POOLBUFFERMAXSIZE */ int cdrPoolBufferThreshold; /* * Maximun value for a serialized sample that can be larger than the * getSerializedSampleMaxSizeFnc if security is enabled. */ int maxSerializedSampleSize; /* * Maximum value for a serialized sample received on an unprotected channel. */ RTI_UINT32 unprotectedChannelsMaxLength; /* State used for security-related operations such as decoding */ struct PRESReaderQueueSecurity security; /*e Owner of this queue */ struct MIGRtpsGuid readerGuid; /*e OID of the subscriber */ MIGRtpsObjectId readerGroupOid; /* * The DataReader queue will process only samples associated with * this TopicQuery */ struct PRESOctetGuid topicQueryGuid; /* * Indicates if the DataReader queue is processing samples associated with * a snapshot TopicQuery */ RTIBool isSnapshotTopicQuery; /*e Control growth in number of virtual remote writers. */ struct REDAFastBufferPoolGrowthProperty virtualWriterCount; /*e The reliability QoS. */ struct PRESReliabilityQosPolicy reliabilityQos; /* For Testing Only: Indicates if filtering has to be performed always on serialized data */ RTIBool _alwaysFilterOnSerialized; }; /* clang-format off */ #define PRESReaderQueueStateProperty_INITIALIZER \ { \ PRES_LENGTH_UNLIMITED, /* cdrPoolBufferThreshold */ \ 0, /* maxSerializedSampleSize */ \ MIG_UNPROTECTED_CHANNELS_MAX_LENGTH_DEFAULT, /* unprotectedChannelsMaxLength */ \ PRES_READER_QUEUE_SECURITY_DEFAULT, /* security */ \ MIG_RTPS_GUID_UNKNOWN, /* readerGuid */ \ MIG_RTPS_OBJECT_ID_UNKNOWN, /* readerGroupOid */ \ PRES_OCTET_GUID_ZERO, /* topicQueryGuid */ \ RTI_FALSE, /* isSnapshotTopicQuery */ \ /* virtualWriterCount */ \ {2, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ PRES_BEST_EFFORT_RELIABILITY_QOS_POLICY_DEFAULT, \ RTI_FALSE /* _alwaysFilterOnSerialized */ \ } /* clang-format on */ struct PRESReaderQueueProperty { /* Reader queue state properties which are used beyond initialization */ struct PRESReaderQueueStateProperty state; /*e Control growth in number of remote writers. */ struct REDAFastBufferPoolGrowthProperty remoteWriterCount; /* Indicates whether to lazily allocate resources for batch processing */ RTIBool lazilyAllocateBatchResources; }; /* clang-format off */ #define PRESReaderQueueProperty_INITIALIZER \ { \ PRESReaderQueueStateProperty_INITIALIZER, /* state */ \ /* remoteWriterCount */ \ {2, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ RTI_TRUE /* lazilyAllocateBatchResources */ \ } /* clang-format on */ #define PRESReaderQueueVirtualWriterListProperty_INITIALIZER { \ {32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ {32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ {32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ PRESReaderQueueVirtualWriterListStateProperty_INITIALIZER, \ 0, \ {32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ {32, REDA_FAST_BUFFER_POOL_UNLIMITED, REDA_FAST_BUFFER_POOL_UNLIMITED}, \ PRES_DURABILITY_QOS_POLICY_DEFAULT, \ {PRES_PERSISTENCE_SERVICE_QOS}, \ PRES_DUP_FILTER_VIRTUAL_RELIABILITY \ } struct PRESReaderQueueListener; struct PRESReaderQueueListenerStorage; #define PRES_MAXIMUM_QUERY_CONDITIONS 32 struct PRESPsService_QueryConditionState { /* The summary field simply indicates if the query condition is active or not */ RTI_UINT32 summary; /* * Array of bitfields indicating the states of each query condition. See * PsReadCondition.c for a description of each of the bits. */ RTI_UINT32 QCstates[PRES_MAXIMUM_QUERY_CONDITIONS]; }; #define PRESPsService_QueryConditionState_INITIALIZER {0, {0}} struct PRESReaderQueueCommittalInfoNode { struct REDAInlineListNode _node; struct PRESReaderQueueCommittalInfo * data; }; struct PRESReaderQueueCommittalInfo { struct REDAInlineListNode _node; struct PRESReaderQueueCommittalInfoNode _wakeupConditionNode; RTIBool keyed; void * queue; RTIBool dataAvailable; int lostCount; PRESSampleLostStatusKind lostReason; int rejectedCount; PRESSampleRejectedStatusKind rejectedReason; struct MIGRtpsKeyHash rejectedInstanceKeyHash; RTI_UINT32 readConditionState; struct PRESPsService_QueryConditionState queryConditionState; void * queueUserData; }; extern PRESDllExport void PRESReaderQueueComittalInfo_initialize( struct PRESReaderQueueCommittalInfo * ci, RTIBool keyed, void * queue, void * queueUserData); extern PRESDllExport void PRESReaderQueueComittalInfo_reset( struct PRESReaderQueueCommittalInfo * ci); extern PRESDllExport struct PRESReaderQueueVirtualWriterList * PRESReaderQueueVirtualWriterList_new( const struct PRESReaderQueueVirtualWriterListProperty *property, const struct PRESReaderQueueListener *listener, const struct PRESReaderQueueListenerStorage *storage); extern PRESDllExport void PRESReaderQueueVirtualWriterList_delete(struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport struct PRESReaderQueueVirtualWriter * PRESReaderQueueVirtualWriterList_assertVirtualWriter( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueVirtualReader *virtualReader, int *failReason, const struct MIGRtpsGuid *guid, RTIBool persist); extern PRESDllExport struct PRESReaderQueueVirtualWriter * PRESReaderQueueVirtualWriterList_getFirstVirtualWriter( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport struct PRESReaderQueueVirtualWriter * PRESReaderQueueVirtualWriterList_getNextVirtualWriter( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport unsigned int PRESReaderQueueVirtualWriterList_getVirtualWriterCount( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport const struct RTINtpTime * PRESReaderQueueVirtualWriterList_getEndpointAvailabilityTimeout( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport const struct RTINtpTime * PRESReaderQueueVirtualWriterList_getDataAvailabilityTimeout( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport struct PRESReaderQueueVirtualWriter * PRESReaderQueueVirtualWriterList_getFirstVirtualWriterInEndpointAvailabilityTimeoutList( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport void PRESReaderQueueVirtualWriterList_removeVirtualWriterFromEndpointAvailabilityTimeoutList( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueVirtualWriter * virtualWriter); extern PRESDllExport struct PRESReaderQueueVirtualWriter * PRESReaderQueueVirtualWriterList_getFirstVirtualWriterInInitialDataAvailabilityTimeoutList( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport void PRESReaderQueueVirtualWriterList_removeVirtualWriterFromInitialDataAvailabilityTimeoutList( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueVirtualWriter * virtualWriter); extern PRESDllExport void PRESReaderQueueVirtualWriterList_removeVirtualWriterFromPendingAppAckList( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueVirtualWriter * virtualWriter); /*e \ingroup PRESReaderQueueModule */ extern PRESDllExport struct PRESReaderQueueVirtualSample * PRESReaderQueueVirtualWriterList_getFirstVirtualSampleInDataAvailabilityTimeoutList( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport void PRESReaderQueueVirtualWriterList_removeVirtualSampleFromDataAvailabilityTimeoutList( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueVirtualSample * virtualSample); extern PRESDllExport struct PRESReaderQueueVirtualWriter * PRESReaderQueueVirtualWriterList_findVirtualWriter( const struct PRESReaderQueueVirtualWriterList *me, const struct MIGRtpsGuid * guid); extern PRESDllExport struct PRESReaderQueueCommittalInfo * PRESReaderQueueVirtualWriterList_getComittalInfo( struct PRESReaderQueueVirtualWriterList *me); extern PRESDllExport void PRESReaderQueueVirtualWriterList_returnComittalInfo( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueCommittalInfo * ci); extern PRESDllExport RTIBool PRESReaderQueueVirtualWriterList_assertRemoteWriter( struct PRESReaderQueueVirtualWriterList *me, const struct MIGRtpsGuid * guid); extern PRESDllExport void PRESReaderQueueVirtualWriterList_removeRemoteWriter( struct PRESReaderQueueVirtualWriterList *me, const struct MIGRtpsGuid * guid); extern PRESDllExport RTIBool PRESReaderQueueVirtualWriterList_existsRemoteWriter( struct PRESReaderQueueVirtualWriterList *me, const struct MIGRtpsGuid * guid); extern PRESDllExport RTIBool PRESReaderQueueVirtualWriterList_confirmAcknowledgement( const struct PRESReaderQueueVirtualWriterList * virtualWriterList, struct REDAInlineList * updateAppAckList, struct PRESReaderQueueVirtualReader * virtualReader, const struct MIGRtpsGuid * remoteWriterGuid, struct MIGRtpsAppAck * appAckConf, const struct RTINtpTime * now); extern PRESDllExport void PRESReaderQueueVirtualWriterList_deleteVirtualReader( struct PRESReaderQueueVirtualWriterList *me, struct PRESReaderQueueVirtualReader * virtualReader); extern PRESDllExport struct PRESReaderQueueVirtualReader * PRESReaderQueueVirtualWriterList_newVirtualReader( struct PRESReaderQueueVirtualWriterList *me, const struct MIGRtpsGuid * guid, const struct PRESReaderQueueVirtualReaderProperty * property, const struct PRESOdbcDatabaseConnection * odbcDatabaseCx); extern PRESDllExport RTIBool PRESReaderQueueVirtualReader_supportStatePersistence( struct PRESReaderQueueVirtualReader *me); extern PRESDllExport RTIBool PRESReaderQueueVirtualReader_persistVirtualWriter( struct PRESReaderQueueVirtualReader * me, struct PRESReaderQueueVirtualWriter * virtualWriter, RTIBool update); extern PRESDllExport RTIBool PRESReaderQueueVirtualReader_restoreInstanceEntry( struct PRESReaderQueueVirtualReader * me, struct PRESReaderQueueVirtualWriterListInstanceEntry * entry, RTIBool * inDatabase); /*e \ingroup PRESReaderQueueModule Stores the instance entry into the database @param me \b In. "this". If NULL, noop. */ extern PRESDllExport RTIBool PRESReaderQueueVirtualReader_persistInstanceEntry( struct PRESReaderQueueVirtualReader * me, struct PRESReaderQueueVirtualWriterListInstanceEntry * entry, RTIBool update); extern PRESDllExport RTIBool PRESReaderQueueVirtualReader_restoreVirtualWriter( struct PRESReaderQueueVirtualReader * me, struct PRESReaderQueueVirtualWriter * virtualWriter, RTIBool * inDatabase); extern PRESDllExport void PRESReaderQueueVirtualReader_finalizeOdbc( struct PRESReaderQueueVirtualReader * me); extern PRESDllExport struct PRESReaderQueuePhysicalWriter * PRESReaderQueueVirtualWriter_assertPhysicalWriter( struct PRESReaderQueueVirtualWriter *me, int *failReason, RTIBool *alreadyExists, /* Out */ struct MIGRtpsAppAck *appAckState, /* inout */ const struct MIGRtpsGuid *physicalWriterGuid, const char *physicalRoleName, void *writer, const struct PRESPresentationQosPolicy *presentationQos, const struct PRESServiceQosPolicy *serviceQos, const struct REDASequenceNumber *nextCommittalSn, RTIBool keyed); extern PRESDllExport void PRESReaderQueueVirtualWriter_removeVirtualSample( struct PRESReaderQueueVirtualWriter * me, struct PRESReaderQueueVirtualSample * virtualSample); extern PRESDllExport struct PRESReaderQueueVirtualSample * PRESReaderQueueVirtualWriter_assertVirtualSample( struct PRESReaderQueueVirtualWriter *me, int *failReason, RTIBool *alreadyExists, struct PRESReaderQueuePhysicalWriter **physicalWriter, struct MIGRtpsAppAck *appAckState, /* inout */ const struct REDASequenceNumber *virtualSn, void *sample, const struct MIGRtpsGuid *physicalWriterGuid, const char *physicalRoleName, void *writer, const struct PRESPresentationQosPolicy *presentationQos, const struct PRESServiceQosPolicy *serviceQos, const struct REDASequenceNumber *nextCommittalSn, RTIBool keyed, const struct PRESReaderQueueEndCoherentSetInfo *endCoherentSetInfo, const struct REDASequenceNumber *physicalSn, struct PRESReaderQueueCoherentSetInfo *coherentSetInfo); extern PRESDllExport RTIBool PRESReaderQueueVirtualWriter_removePhysicalWriter( struct PRESReaderQueueVirtualWriter * virtualWriter, const struct MIGRtpsGuid * physicalWriterGuid); extern PRESDllExport struct PRESReaderQueueVirtualSample * PRESReaderQueueVirtualWriter_getNextComittableVirtualSample( struct PRESReaderQueueVirtualWriter * virtualWriter); extern PRESDllExport void PRESReaderQueueVirtualWriter_stopWaitingForRequiredMatchedEndpointGroups( struct PRESReaderQueueVirtualWriter *me); extern PRESDllExport void PRESReaderQueueVirtualWriter_updateVirtualWriterInfo( struct PRESReaderQueueVirtualWriter *me, struct PRESReaderQueuePhysicalWriter * physicalWriter, const struct MIGRtpsVirtualWriterInfo * info, const struct REDASequenceNumber * lastGroupAvailableVirtualSn); extern PRESDllExport struct PRESReaderQueueVirtualSample * PRESReaderQueueVirtualWriter_getFirstVirtualSample( struct PRESReaderQueueVirtualWriter * virtualWriter); extern PRESDllExport struct PRESReaderQueueVirtualSample * PRESReaderQueueVirtualWriter_getNextVirtualSample( struct PRESReaderQueueVirtualWriter * virtualWriter); struct PRESReaderQueueListenerStorage { void *field[COMMEND_WRITER_SERVICE_WRITER_LISTENER_STORAGE_LENGTH]; }; typedef RTIBool (*PRESReaderQueueListenerOnLostRequiredMatchedEndpointGroups)( const struct PRESReaderQueueListener *listener, const struct PRESReaderQueueListenerStorage * storage, struct PRESReaderQueueVirtualWriter * virtualWriter); typedef RTIBool (*PRESReaderQueueListenerOnDiscoveredRequiredMatchedEndpointGroups)( const struct PRESReaderQueueListener *listener, const struct PRESReaderQueueListenerStorage * storage, struct PRESReaderQueueVirtualWriter * virtualWriter); typedef RTIBool (*PRESReaderQueueListenerOnNewVirtualSampleCallback)( const struct PRESReaderQueueListener *listener, const struct PRESReaderQueueListenerStorage * storage, struct PRESReaderQueueVirtualWriter * virtualWriter, struct PRESReaderQueueVirtualSample * virtualSample); typedef RTIBool (*PRESReaderQueueListenerOnSendAppAckCallback)( const struct PRESReaderQueueListener *listener, const struct PRESReaderQueueListenerStorage * storage); struct PRESReaderQueueListener { PRESReaderQueueListenerOnLostRequiredMatchedEndpointGroups onLostRequiredMatchedEndpointGroups; PRESReaderQueueListenerOnDiscoveredRequiredMatchedEndpointGroups onDiscoveredRequiredMatchedEndpointGroups; PRESReaderQueueListenerOnNewVirtualSampleCallback onNewVirtualSample; /* This callback is invoked whenever a new AppAck message * is ready to be sent */ PRESReaderQueueListenerOnSendAppAckCallback onSendAppAck; }; struct PRESReaderQueueTopicQueryInfo { struct REDAInlineListNode _node; void * queue; /* TopicQuery owner */ struct MIGRtpsGuid _topicQueryGuid; /* Indicates whether the owner TopicQuery is already deleted */ RTIBool _isTopicQueryDeleted; }; #include "pres/pres_readerQueue_impl.h" #ifdef __cplusplus } /* extern "C" */ #endif #endif /* pres_readerQueue_h */