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

969 lines
33 KiB
C

/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */
/*
* @(#)pres_readerQueue.h generated by: makeheader Tue Apr 7 22:56:13 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 */