RTI Connext DDS Micro  Version 2.4.11
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dds_c_subscription.h
Go to the documentation of this file.
1 /*
2  * FILE: dds_c_subscription.h - DDS subscription module
3  *
4  * (c) Copyright, Real-Time Innovations, 2008-2015.
5  *
6  * All rights reserved.
7  *
8  * No duplications, whole or partial, manual or electronic, may be made
9  * without express written permission. Any such copies, or
10  * revisions thereof, must display this notice unaltered.
11  * This code contains trade secrets of Real-Time Innovations, Inc.
12  *
13  * Modification History
14  * --------------------
15  * 07apr2016,tk MICRO-1541 Fixed assignment operator issues for C++
16  * 04nov2015,tk MICRO-1505 - Reduce memory footprint
17  * 11sep2015,tk MICRO-1499/PR#16514 Fixed issues when resetting a remote
18  * participant that prevented it from being
19  * rediscovered.
20  * 29jun2015,tk MICRO-1351/PR#15141 Removed prototypes for non-Cert function
21  * 19may2015,as MICRO-1193 Refactoring of Sequence API levels
22  * 12mar2015,tk MICRO-1092/PR#14108 Set valid init values for DDS_SampleInfo
23  * 08oct2014,tk MICRO-919 Added SampleLostReason to SampleLost status
24  * 20sep2014,as Explicitly define public support functions for Status types
25  * 07may2014,as MICRO-784 Expose get_X_status API in C++
26  * 23apr2014,tk MICRO-367 Made DDS_SampleInfoSeq visible in external doc
27  * 19mar2014,tk MICRO-74 Support endpoint specific transport
28  * 19jul2013,as Added support for C++
29  * 30apr2008,tk Written
30  */
31 /*ce
32  * \file
33  * \brief DDS subscription module
34  */
35 /*ce
36  @addtogroup DDSSubscriptionModule
37  @ingroup DDSCModule
38  @brief Defines the \dds subscription package.
39 */
40 #ifndef dds_c_subscription_h
41 #define dds_c_subscription_h
42 
43 #include "dds_c_config.h"
44 #include "dds_c_sequence.h"
45 
46 #ifndef dds_c_type_h
47 #include "dds_c/dds_c_type.h"
48 #endif
49 
50 #ifndef dds_c_topic_h
51 #include "dds_c/dds_c_topic.h"
52 #endif
53 
54 #ifndef dds_c_dll_h
55 #include "dds_c/dds_c_dll.h"
56 #endif
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
63 /*ci
64  * \brief Default name for the automatically registered DataReader NETIO
65  * interface.
66  */
67 NETIODllVariable extern
68 const char* const DDS_DEFAULT_DATAREADER_NETIO_NAME;
69 
70 /* ================================================================= */
71 /* Typedef for DataReader */
72 /* ================================================================= */
73 
74 /*ce \dref_DataReader
75  */
76 typedef struct DDS_DataReaderImpl DDS_DataReader;
77 
78 
79 /* ================================================================= */
80 /* Typedef for Subscriber */
81 /* ================================================================= */
82 
83 /*ce \dref_Subscriber
84  */
85 typedef struct DDS_SubscriberImpl DDS_Subscriber;
86 
87 /* ================================================================= */
88 /* Status */
89 /* ================================================================= */
90 
91 /* -------------------------------------- */
92 /* Requested Deadline Missed Status */
93 /* -------------------------------------- */
94 
95 /*ce \dref_RequestedDeadlineMissedStatus
96  */
97 struct DDSCPPDllExport DDS_RequestedDeadlineMissedStatus
98 {
99  /*ce \dref_RequestedDeadlineMissedStatus_total_count
100  */
102 
103  /*ce \dref_RequestedDeadlineMissedStatus_total_count_change
104  */
106 
107  /*ce \dref_RequestedDeadlineMissedStatus_last_instance_handle
108  */
110 
111  DDSC_CPP_STATUS_METHODS(DDS_RequestedDeadlineMissedStatus)
112 };
113 
114 /*ce \dref_RequestedDeadlineMissedStatus_INITIALIZER
115  */
116 #define DDS_RequestedDeadlineMissedStatus_INITIALIZER \
117 { 0L, 0L, DDS_HANDLE_NIL_NATIVE }
118 
119 
120 /*ci
121  * \brief Reset the changed counters in DDS_RequestedDeadlineMissedStatus
122  *
123  * \param[in] s Structure to clear
124  */
125 DDSCDllExport void
126 DDS_RequestedDeadlineMissedStatus_reset(struct DDS_RequestedDeadlineMissedStatus *s);
127 
128 /* ------------------------------- */
129 /* Liveliness Changed Status */
130 /* ------------------------------- */
131 
132 /*ce \dref_LivelinessChangedStatus
133  */
134 struct DDSCPPDllExport DDS_LivelinessChangedStatus
135 {
136 
137  /*ce \dref_LivelinessChangedStatus_alive_count
138  */
140 
141  /*ce \dref_LivelinessChangedStatus_not_alive_count
142  */
144 
145  /*ce \dref_LivelinessChangedStatus_alive_count_change
146  */
148 
149  /*ce \dref_LivelinessChangedStatus_not_alive_count_change
150  */
152 
153  /*ce \dref_LivelinessChangedStatus_last_publication_handle
154  */
156 
157  DDSC_CPP_STATUS_METHODS(DDS_LivelinessChangedStatus)
158 };
159 
160 /*ce \dref_LivelinessChangedStatus_INITIALIZER
161  */
162 #define DDS_LivelinessChangedStatus_INITIALIZER { 0L, 0L, 0L, 0L, \
163  DDS_HANDLE_NIL_NATIVE }
164 
165 /*ci
166  * \brief Reset the changed counters in DDS_LivelinessChangedStatus
167  *
168  * \param[in] s Structure to clear
169  */
170 DDSCDllExport void
171 DDS_LivelinessChangedStatus_reset(struct DDS_LivelinessChangedStatus *s);
172 
173 /* --------------------------------------- */
174 /* Requested Incompatible QoS Status */
175 /* --------------------------------------- */
176 
177 /*ce \dref_RequestedIncompatibleQosStatus
178  */
180 {
181  /*ce \dref_RequestedIncompatibleQosStatus_total_count
182  */
184 
185  /*ce \dref_RequestedIncompatibleQosStatus_total_count_change
186  */
188 
189  /*ce \dref_RequestedIncompatibleQosStatus_last_policy_id
190  */
192 
193  /*ce \dref_RequestedIncompatibleQosStatus_policies
194  */
195  struct DDS_QosPolicyCountSeq policies;
196 
197  DDSC_CPP_STATUS_METHODS(DDS_RequestedIncompatibleQosStatus)
198 };
199 
200 /*ce \dref_RequestedIncompatibleQosStatus_INITIALIZER
201  */
202 #define DDS_RequestedIncompatibleQosStatus_INITIALIZER \
203  { 0L, 0L, DDS_INVALID_QOS_POLICY_ID, DDS_SEQUENCE_INITIALIZER }
204 
205 /*ci
206  * \brief Reset the changed counters in DDS_RequestedIncompatibleQosStatus
207  *
208  * \param[in] s Structure to clear
209  */
210 DDSCDllExport void
211 DDS_RequestedIncompatibleQosStatus_reset(struct DDS_RequestedIncompatibleQosStatus *s);
212 
213 /* ----------------------------------- */
214 /* Sample Rejected Status Kind enum */
215 /* ----------------------------------- */
216 
217 /*ce \dref_SampleRejectedStatusKind
218  */
219 typedef enum
220 {
221  /*ce \dref_SampleRejectedStatusKind_NOT_REJECTED
222  */
224 
225  /*ce \dref_SampleRejectedStatusKind_REJECTED_BY_INSTANCES_LIMIT
226  */
228 
229  /*ce \dref_SampleRejectedStatusKind_REJECTED_BY_SAMPLES_LIMIT
230  */
232 
233  /*ce \dref_SampleRejectedStatusKind_REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT
234  */
236 
237  /*ce \dref_SampleRejectedStatusKind_REJECTED_BY_REMOTE_WRITERS_LIMIT
238  */
240 
241  /*ce \dref_SampleRejectedStatusKind_REJECTED_BY_SAMPLES_PER_REMOTE_WRITER_LIMIT
242  */
245 
246 /*i deprecated */
247 #define DDS_REJECTED_BY_INSTANCE_LIMIT DDS_REJECTED_BY_INSTANCES_LIMIT
248 
249 /* --------------------------------- */
250 /* Sample Rejected Status struct */
251 /* --------------------------------- */
252 
253 /*ce \dref_SampleRejectedStatus
254  */
255 struct DDSCPPDllExport DDS_SampleRejectedStatus
256 {
257 
258  /*ce \dref_SampleRejectedStatus_total_count
259  */
261 
262  /*ce \dref_SampleRejectedStatus_total_count_change
263  */
265 
266  /*ce \dref_SampleRejectedStatus_last_reason
267  */
269 
270  /*ce \dref_SampleRejectedStatus_last_instance_handle
271  */
273 
274  DDSC_CPP_STATUS_METHODS(DDS_SampleRejectedStatus)
275 };
276 
277 /*ce \dref_SampleRejectedStatus_INITIALIZER
278  */
279 #define DDS_SampleRejectedStatus_INITIALIZER \
280  { 0L, 0L, DDS_NOT_REJECTED,DDS_HANDLE_NIL_NATIVE }
281 
282 /*ci
283  * \brief Reset the changed counters in DDS_SampleRejectedStatus
284  *
285  * \param[in] s Structure to clear
286  */
287 DDSCDllExport void
288 DDS_SampleRejectedStatus_reset(struct DDS_SampleRejectedStatus *s);
289 
290 /* ----------------------------------------- */
291 /* DataReaderInstanceReplaced Status struct */
292 /* ----------------------------------------- */
293 
294 /*ce \dref_DataReaderInstanceReplacedStatus
295  */
297 {
298  /*ce \dref_DataReaderInstanceReplacedStatus_total_count
299  */
301 
302  /*ce \dref_DataReaderInstanceReplacedStatus_total_count_change
303  */
305 
306  /*ce \dref_DataReaderInstanceReplacedStatus_last_instance_handle
307  */
309 
310  /*ce \dref_DataReaderInstanceReplacedStatus_last_replacement_instance
311  */
313 
314  /*ce \dref_DataReaderInstanceReplacedStatus_publication_handle
315  */
317 
318  /*ce \dref_DataReaderInstanceReplacedStatus_lost_samples
319  */
321 
322  DDSC_CPP_STATUS_METHODS(DDS_DataReaderInstanceReplacedStatus)
323 };
324 
325 /*ce \dref_DataReaderInstanceReplacedStatus_INITIALIZER
326  */
327 #define DDS_DataReaderInstanceReplacedStatus_INITIALIZER \
328  { 0L, 0L, DDS_HANDLE_NIL_NATIVE, \
329  DDS_HANDLE_NIL_NATIVE, DDS_HANDLE_NIL_NATIVE, 0L }
330 
331 /*ci
332  * \brief Reset the changed counters in DDS_DataReaderInstanceReplacedStatus
333  *
334  * \param[in] s Structure to clear
335  */
336 DDSCDllExport void
337 DDS_DataReaderInstanceReplacedStatus_reset(struct DDS_DataReaderInstanceReplacedStatus *s);
338 
339 /* --------------------------------- */
340 /* Subscription Match Status struct */
341 /* --------------------------------- */
342 
343 /*ce \dref_SubscriptionMatchedStatus
344  */
345 struct DDSCPPDllExport DDS_SubscriptionMatchedStatus
346 {
347  /*ce \dref_SubscriptionMatchedStatus_total_count
348  */
350 
351  /*ce \dref_SubscriptionMatchedStatus_total_count_change
352  */
354 
355  /*ce \dref_SubscriptionMatchedStatus_current_count
356  */
358 
359  /*ce \dref_SubscriptionMatchedStatus_current_count_change
360  */
362 
363  /*ce \dref_SubscriptionMatchedStatus_last_publication_handle
364  */
366 
367  DDSC_CPP_STATUS_METHODS(DDS_SubscriptionMatchedStatus)
368 };
369 
370 /*ce \dref_SubscriptionMatchedStatus_INITIALIZER
371  */
372 #define DDS_SubscriptionMatchedStatus_INITIALIZER \
373  { 0L, 0L, 0L, 0L, DDS_HANDLE_NIL_NATIVE}
374 
375 /*ci
376  * \brief Reset the changed counters in DDS_SubscriptionMatchedStatus
377  *
378  * \param[in] s Structure to clear
379  */
380 DDSCDllExport void
381 DDS_SubscriptionMatchedStatus_reset(struct DDS_SubscriptionMatchedStatus *s);
382 
383 /*ci
384  * \brief Initialize a DDS_RequestedDeadlineMissedStatus structure
385  *
386  * \param[in] self DDS_RequestedDeadlineMissedStatus to initialize.
387  *
388  * \return DDS_RETCODE_OK on success, one of the standard error codes on
389  * failure
390  */
391 DDSCDllExport DDS_ReturnCode_t
392 DDS_RequestedDeadlineMissedStatus_initialize(
393  struct DDS_RequestedDeadlineMissedStatus *self);
394 
395 /*ci
396  * \brief Initialize a DDS_RequestedIncompatibleQosStatus structure
397  *
398  * \param[in] self DDS_RequestedIncompatibleQosStatus to initialize
399  *
400  * \return DDS_RETCODE_OK on success, one of the standard error codes on
401  * failure
402  */
403 DDSCDllExport DDS_ReturnCode_t
404 DDS_RequestedIncompatibleQosStatus_initialize(
406 
407 struct DDS_SampleLostStatus;
408 
409 /*ci
410  * \brief Initialize a DDS_SampleLostStatus structure
411  *
412  * \param[in] self DDS_SampleLostStatus to initialize
413  *
414  * \return DDS_RETCODE_OK on success, one of the standard error codes on
415  * failure
416  */
417 DDSCDllExport DDS_ReturnCode_t
418 DDS_SampleLostStatus_initialize(struct DDS_SampleLostStatus *self);
419 
420 /*ci
421  * \brief Initialize a DDS_SampleRejectedStatus structure
422  *
423  * \param[in] self DDS_SampleRejectedStatus to initialize
424  *
425  * \return DDS_RETCODE_OK on success, one of the standard error codes on
426  * failure
427  */
428 DDSCDllExport DDS_ReturnCode_t
429 DDS_SampleRejectedStatus_initialize(
430  struct DDS_SampleRejectedStatus *self);
431 
432 /*ci
433  * \brief Initialize a DDS_SubscriptionMatchedStatus structure
434  *
435  * \param[in] self DDS_SubscriptionMatchedStatus to initialize
436  *
437  * \return DDS_RETCODE_OK on success, one of the standard error codes on
438  * failure
439  */
440 DDSCDllExport DDS_ReturnCode_t
441 DDS_SubscriptionMatchedStatus_initialize(
442  struct DDS_SubscriptionMatchedStatus *self);
443 
444 /*ci
445  * \brief Initialize a DDS_LivelinessChangedStatus structure
446  *
447  * \param[in] self DDS_LivelinessChangedStatus to initialize
448  *
449  * \return DDS_RETCODE_OK on success, one of the standard error codes on
450  * failure
451  */
452 DDSCDllExport DDS_ReturnCode_t
453 DDS_LivelinessChangedStatus_initialize(
454  struct DDS_LivelinessChangedStatus *self);
455 
456 /*ci
457  * \brief Initialize a DDS_DataReaderInstanceReplacedStatus structure
458  *
459  * \param[in] self DDS_DataReaderInstanceReplacedStatus to initialize
460  *
461  * \return DDS_RETCODE_OK on success, one of the standard error codes on
462  * failure
463  */
464 DDSCDllExport DDS_ReturnCode_t
465 DDS_DataReaderInstanceReplacedStatus_initialize(
467 
468 /* ================================================================= */
469 /* Sample States */
470 /* ================================================================= */
471 
472 /* ---------------------------- */
473 /* Sample State Kind enum */
474 /* ---------------------------- */
475 
476 /*ce \dref_SampleStateKind
477  */
478 typedef enum
479 {
480  /*ce \dref_SampleStateKind_READ_SAMPLE_STATE
481  */
482  DDS_READ_SAMPLE_STATE = 0x0001 << 0,
483 
484  /*ce \dref_SampleStateKind_NOT_READ_SAMPLE_STATE
485  */
488 
489 /* ---------------------------- */
490 /* Sample State Mask */
491 /* ---------------------------- */
492 
493 /*ce \dref_SampleStateMask
494  */
496 
497 /*ce \dref_ANY_SAMPLE_STATE
498  */
499 extern DDSCDllVariable const DDS_SampleStateMask DDS_ANY_SAMPLE_STATE;
500 
501 /* ================================================================= */
502 /* View States */
503 /* ================================================================= */
504 
505 /* ---------------------------- */
506 /* View State Kind enum */
507 /* ---------------------------- */
508 
509 /*ce \dref_ViewStateKind
510  */
511 typedef enum
512 {
513  /*ce \dref_ViewStateKind_NEW_VIEW_STATE
514  */
515  DDS_NEW_VIEW_STATE = 0x0001 << 0,
516 
517  /*ce \dref_ViewStateKind_NOT_NEW_VIEW_STATE
518  */
521 
522 /* ---------------------------- */
523 /* View State Mask */
524 /* ---------------------------- */
525 
526 /*ce \dref_ViewStateMask
527  */
529 
530 /*ce \dref_ANY_VIEW_STATE
531  */
532  extern DDSCDllVariable const DDS_ViewStateMask DDS_ANY_VIEW_STATE;
533 
534 /* ================================================================= */
535 /* Instance States */
536 /* ================================================================= */
537 
538 /* ---------------------------- */
539 /* Instance State Kind enum */
540 /* ---------------------------- */
541 
542 /*ce \dref_InstanceStateKind
543  */
544  typedef enum
545  {
546  /*ce \dref_InstanceStateKind_ALIVE_INSTANCE_STATE
547  */
549 
550  /*ce \dref_InstanceStateKind_NOT_ALIVE_DISPOSED_INSTANCE_STATE
551  */
553 
554  /*ce \dref_InstanceStateKind_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE
555  */
558 
559 /* ---------------------------- */
560 /* Instance State Mask */
561 /* ---------------------------- */
562 
563 /*ce \dref_InstanceStateMask
564  */
566 
567 /*ce \dref_ANY_INSTANCE_STATE
568  */
569 extern DDSCDllVariable const DDS_InstanceStateMask DDS_ANY_INSTANCE_STATE;
570 
571 /*ce \dref_NOT_ALIVE_INSTANCE_STATE
572  */
573 extern DDSCDllVariable const DDS_InstanceStateMask DDS_NOT_ALIVE_INSTANCE_STATE;
574 
575 
576 /* ================================================================= */
577 /* Sample Info */
578 /* ================================================================= */
579 
580 /* --------------------------- */
581 /* Sample Info struct */
582 /* --------------------------- */
583 
584 /*ce \dref_SampleInfo
585  */
587 {
588  /*ce \dref_SampleInfo_sample_state
589  */
591 
592  /*ce \dref_SampleInfo_view_state
593  */
595 
596  /*ce \dref_SampleInfo_instance_state
597  */
599 
600  /*ce \dref_SampleInfo_source_timestamp
601  */
603 
604  /*ce \dref_SampleInfo_instance_handle
605  */
607 
608  /*ce \dref_SampleInfo_publication_handle
609  */
611 
612 #if DDS_INCLUDE_SAMPLE_INFO_RANKS
613  /*i \dref_SampleInfo_disposed_generation_count
614  */
615  DDS_Byte disposed_generation_count;
616 
617  /*i \dref_SampleInfo_no_writers_generation_count
618  */
619  DDS_Byte no_writers_generation_count;
620 
621  /*i \dref_SampleInfo_sample_rank
622  */
623  DDS_Byte sample_rank;
624 
625  /*i \dref_SampleInfo_generation_rank
626  */
627  DDS_Byte generation_rank;
628 
629  /*i \dref_SampleInfo_absolute_generation_rank
630  */
631  DDS_Byte absolute_generation_rank;
632 #endif
633 
634  /*ce \dref_SampleInfo_valid_data
635  */
637 
638  /*ce \dref_SampleInfo_reception_timestamp
639  */
641 
642  /*i \dref_SampleInfo_publication_sequence_number
643  */
644  struct DDS_SequenceNumber_t publication_sequence_number;
645 
646  /*i \dref_SampleInfo_publication_virtual_sequence_number
647  */
648  struct DDS_SequenceNumber_t publication_virtual_sequence_number;
649 
650  /*i Reserved, for internal use
651  */
652  void *reserved_data;
653 };
654 
655 #if DDS_INCLUDE_SAMPLE_INFO_RANKS
656 #define DDS_SampleInfo_INITIALIZE_RANKS 0,0,0,0,0,
657 #else
658 #define DDS_SampleInfo_INITIALIZE_RANKS
659 #endif
660 
661 /*ci
662  * \brief Initialized for the DDS_SampleInfo structure
663  */
664 #define DDS_SampleInfo_INITIALIZER \
665 {\
666  DDS_NOT_READ_SAMPLE_STATE,\
667  DDS_NEW_VIEW_STATE,\
668  DDS_ALIVE_INSTANCE_STATE,\
669  {0,0},DDS_HANDLE_NIL_NATIVE,\
670  DDS_HANDLE_NIL_NATIVE, \
671  DDS_SampleInfo_INITIALIZE_RANKS \
672  RTI_FALSE,{0,0},\
673  REDA_SEQUENCE_NUMBER_ZERO,\
674  REDA_SEQUENCE_NUMBER_ZERO,\
675  NULL\
676 }
677 
678 #ifdef __cplusplus
679 } /* extern "C" */
680 #endif
681 
682 #define T struct DDS_SampleInfo
683 #define TSeq DDS_SampleInfoSeq
684 #define REDA_SEQUENCE_API REDA_SEQUENCE_API_FULL
685 #include <reda/reda_sequence_decl.h>
686 
687 #ifdef __cplusplus
688 extern "C" {
689 #endif
690 
691 #ifdef DOXYGEN_DOCUMENTATION_ONLY
692 
693 /*ce \dref_SampleInfoSeq
694  */
696 #endif
697 
698 #ifdef __cplusplus
699 } /* extern "C" */
700 #endif
701 
702 /* ------------------------- */
703 /* Sample Lost Status */
704 /* ------------------------- */
705 
706 /*ce \dref_SampleLostStatusKind
707  */
708 typedef enum
709 {
710  /*ce \dref_SampleLostStatusKind_NOT_LOST
711  */
713 
714  /*ce \dref_SampleLostStatusKind_BY_DATAWRITER
715  */
717 
718  /*ce \dref_SampleLostStatusKind_BY_MAX_SAMPLES_LIMIT
719  */
721 
722  /*ce \dref_SampleLostStatusKind_BY_HISTORY_DEPTH_LIMIT
723  */
725 
726  /*ce \dref_SampleLostStatusKind_BY_META_SAMPLE_LIMIT
727  */
729 
730  /*ce \dref_SampleLostStatusKind_BY_NOT_READ_ON_CACHE_DELETION
731  */
734 
735 /*ce \dref_SampleLostStatus
736  */
737 struct DDSCPPDllExport DDS_SampleLostStatus
738 {
739  /*ce \dref_SampleLostStatus_total_count
740  */
742 
743  /*ce \dref_SampleLostStatus_total_count_change
744  */
746 
747  /*ce \dref_SampleLostStatus_reason
748  */
750 
751  /*ce \dref_SampleLostStatus_sample_info
752  */
753  struct DDS_SampleInfo sample_info;
754 
755  DDSC_CPP_STATUS_METHODS(DDS_SampleLostStatus)
756 };
757 
758 /*ce \dref_SampleLostStatus_INITIALIZER
759  */
760 #define DDS_SampleLostStatus_INITIALIZER \
761 { \
762  0L, 0L,DDS_SAMPLE_LOST_NOT_LOST,DDS_SampleInfo_INITIALIZER \
763 }
764 
765 /*ci
766  * \brief Reset the changed counters in DDS_SampleLostStatus
767  *
768  * \param[in] s Structure to clear
769  */
770 DDSCDllExport void
771 DDS_SampleLostStatus_reset(struct DDS_SampleLostStatus *s);
772 
773 /* ================================================================= */
774 /* QoS */
775 /* ================================================================= */
776 
777 /* --------------------- */
778 /* DataReader QoS struct */
779 /* --------------------- */
780 
781 /*i \dref_DataReaderData
782  */
783 struct DDS_DataReaderData
784 {
785  /*ci
786  * \brief Pointer to the datareader specific unicast locators, if any
787  */
788  struct DDS_LocatorSeq *unicast_locator;
789 
790  /*ci
791  * \brief Pointer to the DataReader specific multicast locators, if any
792  */
793  struct DDS_LocatorSeq *multicast_locator;
794 };
795 
796 /*ce \dref_DataReaderQos
797  */
798 struct DDSCPPDllExport DDS_DataReaderQos
799 {
800  /*ce \dref_DataReaderQos_deadline
801  */
802  struct DDS_DeadlineQosPolicy deadline;
803 
804  /*ce \dref_DataReaderQos_liveliness
805  */
806  struct DDS_LivelinessQosPolicy liveliness;
807 
808  /*ce \dref_DataReaderQos_history
809  */
810  struct DDS_HistoryQosPolicy history;
811 
812  /*ce \dref_DataReaderQos_resource_limits
813  */
814  struct DDS_ResourceLimitsQosPolicy resource_limits;
815 
816  /*ce \dref_DataReaderQos_ownership
817  */
818  struct DDS_OwnershipQosPolicy ownership;
819 
820  /*ce \dref_DataReaderQos_reliability
821  */
822  struct DDS_ReliabilityQosPolicy reliability;
823 
824  /*ce \dref_DataReaderQos_durability
825  */
826  struct DDS_DurabilityQosPolicy durability;
827 
828  /*e \dref_DataReaderQos_destination_order
829  */
830  struct DDS_DestinationOrderQosPolicy destination_order;
831 
832  /* --- Extensions: ---------------------------------------------------- */
833  /*i \dref_DataWriterQos_type_support
834  */
835  struct DDS_TypeSupportQosPolicy type_support;
836 
837  /*ce \dref_DataReaderQos_protocol
838  */
840 
841  /*ce \dref_DataReaderQos_transport
842  */
843  struct DDS_TransportQosPolicy transport;
844 
845  /*ce \dref_DataReaderQos_reader_resource_limits
846  */
847  struct DDS_DataReaderResourceLimitsQosPolicy reader_resource_limits;
848 
849  /*i \dref_DataReaderQos_management
850  */
851  struct RTI_ManagementQosPolicy management;
852 
853  /*i \dref_DataReaderQos_data
854  */
855  struct DDS_DataReaderData *data;
856 
857  DDSC_CPP_QOS_METHODS(DDS_DataReaderQos)
858 };
859 
860 #ifdef __cplusplus
861 extern "C" {
862 #endif
863 
864 /*ce \dref_DataReaderQos_initialize
865  */
866 DDSCDllExport DDS_ReturnCode_t
868 
869 /*ce \dref_DataReaderQos_copy
870  */
871 DDSCDllExport DDS_ReturnCode_t
873  struct DDS_DataReaderQos *self,
874  const struct DDS_DataReaderQos *source);
875 
876 
877 /*ci
878  * \brief Compare two DDS_DataReaderQos policies for equality
879  *
880  * \param[in] left The left side of the comparison
881  * \param[in] right The right side of the comparison
882  *
883  * \return DDS_BOOLEAN_TRUE if the structures are equal,
884  * DDS_BOOLEAN_TRUE otherwise
885  */
886 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
887 DDS_DataReaderQos_is_equal(const struct DDS_DataReaderQos *left,
888  const struct DDS_DataReaderQos *right);
889 
890 #ifndef RTI_CERT
891 /*ce \dref_DataReaderQos_finalize
892  */
893 DDSCDllExport DDS_ReturnCode_t
895 #endif
896 
897 /*ce \dref_DataReaderQos_INITIALIZER
898  */
899 #define DDS_DataReaderQos_INITIALIZER { \
900  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
901  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
902  DDS_HISTORY_QOS_POLICY_DEFAULT, \
903  DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT, \
904  DDS_OWNERSHIP_QOS_POLICY_DEFAULT, \
905  DDS_RELIABILITY_QOS_POLICY_DEFAULT, \
906  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
907  DDS_DESTINATION_ORDER_QOS_POLICY_DEFAULT, \
908  DDS_TYPESUPPORT_QOS_POLICY_DEFAULT, \
909  DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT, \
910  DDS_TRANSPORT_QOS_POLICY_DEFAULT, \
911  DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT, \
912  RTI_MANAGEMENT_QOS_POLICY_DEFAULT, \
913  NULL \
914 }
915 
916 #ifdef __cplusplus
917 } /* extern "C" */
918 #endif
919 
920 /* --------------------- */
921 /* Subscriber QoS struct */
922 /* --------------------- */
923 
924 /*ce \dref_SubscriberQos
925  */
926 struct DDSCPPDllExport DDS_SubscriberQos
927 {
928  /*ce \dref_SubscriberQos_entity_factory
929  */
930  struct DDS_EntityFactoryQosPolicy entity_factory;
931 
932  /*i \dref_SubscriberQos_management
933  */
934  struct RTI_ManagementQosPolicy management;
935 
936  DDSC_CPP_QOS_METHODS(DDS_SubscriberQos)
937 };
938 
939 
940 #ifdef __cplusplus
941 extern "C" {
942 #endif
943 
944 /*ce \dref_SubscriberQos_initialize
945  */
946 DDSCDllExport DDS_ReturnCode_t
948 
949 /*ce \dref_SubscriberQos_copy
950  */
951 DDSCDllExport DDS_ReturnCode_t
953  struct DDS_SubscriberQos *self,
954  const struct DDS_SubscriberQos *source);
955 
956 /*ci
957  * \brief Compare two DDS_SubscriberQos policies for equality
958  *
959  * \param[in] self The left side of the comparison
960  * \param[in] source The right side of the comparison
961  *
962  * \return DDS_BOOLEAN_TRUE if the structures are equal,
963  * DDS_BOOLEAN_TRUE otherwise
964  */
965 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
966 DDS_SubscriberQos_is_equal(const struct DDS_SubscriberQos *self,
967  const struct DDS_SubscriberQos *source);
968 
969 #ifndef RTI_CERT
970 /*ce \dref_SubscriberQos_finalize
971  */
972 DDSCDllExport DDS_ReturnCode_t
974 #endif
975 
976 /*ce \dref_SubscriberQos_INITIALIZER
977  */
978 #define DDS_SubscriberQos_INITIALIZER { \
979  DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT, \
980  RTI_MANAGEMENT_QOS_POLICY_DEFAULT \
981 }
982 
983 /* ================================================================= */
984 /* Listeners */
985 /* ================================================================= */
986 
987 /*ci @ingroup DDSReaderModule
988  @brief Pointer to DDS_DataReader
989  */
990 typedef DDS_DataReader *DDS_DataReader_ptr;
991 
992 /* -------------------------------------- */
993 /* DataReader Listener callback typedefs */
994 /* -------------------------------------- */
995 
996 /*ce \dref_DataReaderListener_RequestedDeadlineMissedCallback
997  */
998 typedef void
1000  void *listener_data,
1001  DDS_DataReader* reader,
1002  const struct DDS_RequestedDeadlineMissedStatus *status);
1003 
1004 
1005 /*ce \dref_DataReaderListener_LivelinessChangedCallback
1006  */
1007 typedef void
1009  void *listener_data,
1010  DDS_DataReader *reader,
1011  const struct DDS_LivelinessChangedStatus *status);
1012 
1013 /*ce \dref_DataReaderListener_RequestedIncompatibleQosCallback
1014  */
1015 typedef void
1017  void *listener_data,
1018  DDS_DataReader *reader,
1019  const struct DDS_RequestedIncompatibleQosStatus *status);
1020 
1021 /*ce \dref_DataReaderListener_SampleRejectedCallback
1022  */
1023 typedef void
1025  void *listener_data,
1026  DDS_DataReader *reader,
1027  const struct DDS_SampleRejectedStatus *status);
1028 
1029 /*ce \dref_DataReaderListener_DataAvailableCallback
1030  */
1031 typedef void
1033  void *listener_data,
1034  DDS_DataReader *reader);
1035 
1036 /*ce \dref_DataReaderListener_SubscriptionMatchedCallback
1037  */
1038 typedef void
1040  void *listener_data,
1041  DDS_DataReader *reader,
1042  const struct DDS_SubscriptionMatchedStatus *status);
1043 
1044 /*ce \dref_DataReaderListener_SampleLostCallback
1045  */
1046 typedef void
1048  void *listener_data,
1049  DDS_DataReader *reader,
1050  const struct DDS_SampleLostStatus *status);
1051 
1052 /*ce \dref_DataReaderListener_InstanceReplacedCallback
1053  */
1054 typedef void
1056  void *listener_data,
1057  DDS_DataReader *reader,
1058  const struct DDS_DataReaderInstanceReplacedStatus *status);
1059 
1060 #if DOXYGEN_DOCUMENTATION_ONLY
1061 /*ce \dref_DataReaderListener_BeforeSampleDeserializeCallback
1062  */
1063 typedef DDS_Boolean
1065  void *listener_data,
1066  DDS_DataReader *reader,
1067  struct NDDS_Type_Plugin *plugin,
1068  struct CDR_Stream_t *stream,
1069  DDS_Boolean *dropped);
1070 #else
1071 
1072 FUNCTION_MUST_TYPEDEF(
1075  void *listener_data,
1076  DDS_DataReader *reader,
1077  struct NDDS_Type_Plugin *plugin,
1078  struct CDR_Stream_t *stream,
1079  DDS_Boolean *dropped)
1080 )
1081 #endif
1082 
1083 #if DOXYGEN_DOCUMENTATION_ONLY
1084 /*ce \dref_DataReaderListener_BeforeSampleCommitCallback
1085  */
1086 typedef DDS_Boolean
1088  void *listener_data,
1089  DDS_DataReader *reader,
1090  const void *const sample,
1091  DDS_Boolean *dropped);
1092 #else
1093 
1094 FUNCTION_MUST_TYPEDEF(
1097  void *listener_data,
1098  DDS_DataReader *reader,
1099  const void *const sample,
1100  const struct DDS_SampleInfo *const sample_info,
1101  DDS_Boolean *dropped)
1102 )
1103 #endif
1104 
1105 /* -------------------------- */
1106 /* DataReader Listener struct */
1107 /* -------------------------- */
1108 
1109 /*ce \dref_DataReaderListener
1110  */
1112 {
1113  /*ce \dref_DataReaderListener_as_listener
1114  */
1116 
1117  /*ce \dref_DataReaderListener_on_requested_deadline_missed
1118  */
1121 
1122  /*ce \dref_DataReaderListener_on_requested_incompatible_qos
1123  */
1126 
1127  /*ce \dref_DataReaderListener_on_sample_rejected
1128  */
1131 
1132  /*ce \dref_DataReaderListener_on_liveliness_changed
1133  */
1136 
1137  /*ce \dref_DataReaderListener_on_data_available
1138  */
1141 
1142  /*ce \dref_DataReaderListener_on_subscription_matched
1143  */
1146 
1147  /*ce \dref_DataReaderListener_on_sample_lost
1148  */
1151 
1152  /*ce \dref_DataReaderListener_on_before_sample_deserialize
1153  */
1156 
1157  /*ce \dref_DataReaderListener_on_before_sample_commit
1158  */
1161 
1162  /*ce \dref_DataReaderListener_on_instance_replaced
1163  */
1166 };
1167 
1168 /*ce \dref_DataReaderListener_INITIALIZER
1169  */
1170 #define DDS_DataReaderListener_INITIALIZER \
1171 {\
1172  DDS_Listener_INITIALIZER, \
1173  (DDS_DataReaderListener_RequestedDeadlineMissedCallback)NULL, \
1174  (DDS_DataReaderListener_RequestedIncompatibleQosCallback)NULL, \
1175  (DDS_DataReaderListener_SampleRejectedCallback)NULL, \
1176  (DDS_DataReaderListener_LivelinessChangedCallback)NULL, \
1177  (DDS_DataReaderListener_DataAvailableCallback)NULL, \
1178  (DDS_DataReaderListener_SubscriptionMatchedCallback)NULL, \
1179  (DDS_DataReaderListener_SampleLostCallback)NULL,\
1180  (DDS_DataReaderListener_BeforeSampleDeserializeCallback)NULL,\
1181  (DDS_DataReaderListener_BeforeSampleCommitCallback)NULL,\
1182  (DDS_DataReaderListener_InstanceReplacedCallback)NULL\
1183 }
1184 
1185 /* -------------------------------------- */
1186 /* Subscriber Listener callback typedefs */
1187 /* -------------------------------------- */
1188 
1189 /*ce \dref_SubscriberListener_DataOnReadersCallback
1190  */
1191 typedef void
1193  void *listener_data,
1194  DDS_Subscriber *sub);
1195 
1196 
1197 /* ----------------------------- */
1198 /* Subscriber Listener struct */
1199 /* ----------------------------- */
1200 
1201 /*ce \dref_SubscriberListener
1202  */
1204 {
1205 
1206  /*ce \dref_SubscriberListener_as_datareaderlistener
1207  */
1209 
1210  /*ce \dref_SubscriberListener_on_data_on_readers
1211  */
1213 };
1214 
1215 /*ce \dref_SubscriberListener_INITIALIZER
1216  */
1217 #define DDS_SubscriberListener_INITIALIZER \
1218  { DDS_DataReaderListener_INITIALIZER, \
1219  (DDS_SubscriberListener_DataOnReadersCallback)NULL }
1220 
1221 /* ================================================================= */
1222 /* Subscriber */
1223 /* ================================================================= */
1224 
1225 /*ce \dref_DATAREADER_QOS_DEFAULT
1226  */
1227 extern DDSCDllVariable const struct DDS_DataReaderQos
1229 
1230 /*ce \dref_DATAREADER_QOS_USE_TOPIC_QOS
1231  */
1232 extern DDSCDllVariable const struct DDS_DataReaderQos
1234 
1235 /* ----------------------------------------------------------------- */
1236 #define DDS_Subscriber_as_entity(subscriberPtr) \
1237  ((DDS_Entity*) subscriberPtr)
1238 
1239 /* ----------------------------------------------------------------- */
1240 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1241 
1242 /*ce \dref_Subscriber_as_entity
1243  */
1245 
1246 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1247 
1248 /* ----------------------------------------------------------------- */
1249 /*ce \dref_Subscriber_get_default_datareader_qos
1250  */
1251 /* #if INCLUDE_API_QOS */
1252 DDSCDllExport DDS_ReturnCode_t
1254  DDS_Subscriber *self,
1255  struct DDS_DataReaderQos *qos);
1256 
1257 /* ----------------------------------------------------------------- */
1258 /*ce \dref_Subscriber_set_default_datareader_qos
1259  */
1260 /* #if INCLUDE_API_QOS */
1261 DDSCDllExport DDS_ReturnCode_t
1263  DDS_Subscriber *self,
1264  const struct DDS_DataReaderQos *qos);
1265 
1266 /* ----------------------------------------------------------------- */
1267 /*ce \dref_Subscriber_create_datareader
1268  */
1269 DDSCDllExport DDS_DataReader*
1271  DDS_TopicDescription *topic,
1272  const struct DDS_DataReaderQos *qos,
1273  const struct DDS_DataReaderListener *listener,
1274  DDS_StatusMask mask);
1275 
1276 /* ----------------------------------------------------------------- */
1277 #ifndef RTI_CERT
1278 /*ce \dref_Subscriber_delete_datareader
1279  */
1280 DDSCDllExport DDS_ReturnCode_t
1282  DDS_Subscriber *self,
1283  DDS_DataReader *a_datareader);
1284 #endif
1285 
1286 /* ----------------------------------------------------------------- */
1287 /*ce \dref_Subscriber_enable
1288  */
1289 DDSCDllExport DDS_ReturnCode_t
1291 
1292 /* ----------------------------------------------------------------- */
1293 #ifndef RTI_CERT
1294 /*ce \dref_Subscriber_delete_contained_entities
1295  */
1296 DDSCDllExport DDS_ReturnCode_t
1298 #endif
1299 
1300 /* ----------------------------------------------------------------- */
1301 /* #ifdef INCLUDE_API_LOOKUP */
1302 /*ce \dref_Subscriber_lookup_datareader
1303  */
1304 DDSCDllExport DDS_DataReader*
1306  DDS_Subscriber *self,
1307  const char *topic_name);
1308 
1309 /* ----------------------------------------------------------------- */
1310 /*ce \dref_Subscriber_get_participant
1311  */
1312 DDSCDllExport DDS_DomainParticipant*
1314 
1315 
1316 /* ----------------------------------------------------------------- */
1317 #if INCLUDE_API_QOS
1318 /*ce \dref_Subscriber_set_qos
1319  */
1320 DDSCDllExport DDS_ReturnCode_t
1322  DDS_Subscriber* self,
1323  const struct DDS_SubscriberQos *qos);
1324 
1325 /* ----------------------------------------------------------------- */
1326 /*ce \dref_Subscriber_get_qos
1327  */
1328 DDSCDllExport DDS_ReturnCode_t
1330  DDS_Subscriber *self,
1331  struct DDS_SubscriberQos *qos);
1332 #endif
1333 
1334 /* ----------------------------------------------------------------- */
1335 
1336 #ifndef RTI_CERT
1337 /*ce \dref_Subscriber_set_listener
1338  */
1339 DDSCDllExport DDS_ReturnCode_t
1341  DDS_Subscriber * self,
1342  const struct DDS_SubscriberListener *l,
1343  DDS_StatusMask mask);
1344 #endif
1345 
1346 #ifndef RTI_CERT
1347 /*ce \dref_Subscriber_get_listener
1348  */
1349 DDSCDllExport struct DDS_SubscriberListener
1351 #endif
1352 
1353 /* ================================================================= */
1354 /* Data Reader */
1355 /* ================================================================= */
1356 #define DDS_DataReader_as_entity(dataReaderPtr) \
1357  ((DDS_Entity*) dataReaderPtr)
1358 
1359 /* ----------------------------------------------------------------- */
1360 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1361 /*ce \dref_DataReader_as_entity
1362  */
1363 DDS_Entity *
1365 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1366 
1367 /* ----------------------------------------------------------------- */
1368 /*ce \dref_DataReader_enable
1369  */
1370 DDSCDllExport DDS_ReturnCode_t
1372 
1373 /* ----------------------------------------------------------------- */
1374 #if INCLUDE_API_LOOKUP
1375 /*ce \dref_DataReader_get_matched_publications
1376  */
1377 DDSCDllExport DDS_ReturnCode_t
1379  DDS_DataReader *self,
1380  struct DDS_InstanceHandleSeq *publication_handles);
1381 #endif /* INCLUDE_API_LOOKUP */
1382 
1384 /* ----------------------------------------------------------------- */
1385 #if INCLUDE_API_LOOKUP
1386 /*ce \dref_DataReader_get_matched_publication_data
1387  */
1388 DDSCDllExport DDS_ReturnCode_t
1390  DDS_DataReader *self,
1391  struct DDS_PublicationBuiltinTopicData *publication_data,
1392  const DDS_InstanceHandle_t *publication_handle);
1393 #endif /* INCLUDE_API_LOOKUP */
1394 
1395 /* ----------------------------------------------------------------- */
1396 /*ce \dref_DataReader_get_topicdescription
1397  */
1398 DDSCDllExport DDS_TopicDescription*
1400 
1401 /* ----------------------------------------------------------------- */
1402 /*ce \dref_DataReader_get_subscriber
1403  */
1404 DDSCDllExport DDS_Subscriber*
1406 
1407 
1408 /* ----------------------------------------------------------------- */
1409 /*ce \dref_DataReader_get_sample_rejected_status
1410  */
1411 DDSCDllExport DDS_ReturnCode_t
1413  DDS_DataReader *self,
1414  struct DDS_SampleRejectedStatus *status);
1415 
1416 /* ----------------------------------------------------------------- */
1417 /*ce \dref_DataReader_get_liveliness_changed_status
1418  */
1419 DDSCDllExport DDS_ReturnCode_t
1421  DDS_DataReader *self,
1422  struct DDS_LivelinessChangedStatus *status);
1423 
1424 /* ----------------------------------------------------------------- */
1425 /*ce \dref_DataReader_get_requested_deadline_missed_status
1426  */
1427 DDSCDllExport DDS_ReturnCode_t
1429  DDS_DataReader *self,
1430  struct DDS_RequestedDeadlineMissedStatus *status);
1431 
1432 /* ----------------------------------------------------------------- */
1433 /*ce \dref_DataReader_get_requested_incompatible_qos_status
1434  */
1435 DDSCDllExport DDS_ReturnCode_t
1437  DDS_DataReader *self,
1438  struct DDS_RequestedIncompatibleQosStatus *status);
1439 
1440 /* ----------------------------------------------------------------- */
1441 /*ce \dref_DataReader_get_subscription_matched_status
1442  */
1443 DDSCDllExport DDS_ReturnCode_t
1445  DDS_DataReader *self,
1446  struct DDS_SubscriptionMatchedStatus *status);
1447 
1448 /* ----------------------------------------------------------------- */
1449 /*ce \dref_DataReader_get_sample_lost_status
1450  */
1451 DDSCDllExport DDS_ReturnCode_t
1453  DDS_DataReader *self,
1454  struct DDS_SampleLostStatus *status);
1455 
1456 /* ----------------------------------------------------------------- */
1457 /*ce \dref_DataReader_get_instance_replaced_status
1458  */
1459 DDSCDllExport DDS_ReturnCode_t
1461  DDS_DataReader *self,
1462  struct DDS_DataReaderInstanceReplacedStatus *status);
1463 
1464 /*ci
1465  * \brief Get a pointer to the DataReader's Qos policy
1466  *
1467  * \details
1468  * NOTE: It is up to the caller to ensure the datareader is not deleted while
1469  * the Qos is being accessed.
1470  *
1471  * \return Pointer to DDS_DataReaderQos*
1472  */
1473 DDSCDllExport struct DDS_DataReaderQos*
1474 DDS_DataReader_get_qos_ref(DDS_DataReader *self);
1475 
1476 /* ----------------------------------------------------------------- */
1477 #if INCLUDE_API_QOS
1478 /*ce \dref_DataReader_set_qos
1479  */
1480 DDSCDllExport DDS_ReturnCode_t
1482  DDS_DataReader* self,
1483  const struct DDS_DataReaderQos *qos);
1484 
1485 /* ----------------------------------------------------------------- */
1486 /*ce \dref_DataReader_get_qos
1487  */
1488 DDSCDllExport DDS_ReturnCode_t
1490  struct DDS_DataReaderQos *qos);
1491 #endif
1492 
1493 /* ----------------------------------------------------------------- */
1494 #ifndef RTI_CERT
1495 /*ce \dref_DataReader_set_listener
1496  */
1497 DDSCDllExport DDS_ReturnCode_t
1499  DDS_DataReader * self,
1500  const struct DDS_DataReaderListener *l,
1501  DDS_StatusMask mask);
1502 #endif
1503 
1504 /* ----------------------------------------------------------------- */
1505 #ifndef RTI_CERT
1506 /*ce \dref_DataReader_get_listener
1507  */
1508 DDSCDllExport struct DDS_DataReaderListener
1510 #endif
1511 /* ----------------------------------------------------------------- */
1512 
1513 /*ce \dref_DataReader_get_instance_replaced_status
1514  */
1517  struct DDS_DataReaderInstanceReplacedStatus *status);
1518 
1519 /* ----------------------------------------------------------------- */
1520 
1521 #ifdef __cplusplus
1522 }
1523 #endif
1524 
1525 #include "dds_c/dds_c_rh_plugin.h"
1526 
1527 #ifdef __cplusplus
1528 extern "C"
1529 {
1530 #endif
1531 
1532 /* REDA_SEQUENCE_API is always assumed to be FULL for DDS_UntypedSampleSeq */
1533 #define DDS_UntypedSampleSeq REDA_Sequence
1534 #define DDS_UntypedSampleSeq_initialize REDA_Sequence_initialize
1535 #ifndef RTI_CERT
1536 #define DDS_UntypedSampleSeq_finalize REDA_Sequence_finalize
1537 #endif /* !RTI_CERT */
1538 #define DDS_UntypedSampleSeq_get_maximum REDA_Sequence_get_maximum
1539 #define DDS_UntypedSampleSeq_set_maximum REDA_Sequence_set_maximum
1540 #define DDS_UntypedSampleSeq_get_length REDA_Sequence_get_length
1541 #define DDS_UntypedSampleSeq_set_length REDA_Sequence_set_length
1542 #define DDS_UntypedSampleSeq_get_reference REDA_Sequence_get_reference
1543 #define DDS_UntypedSampleSeq_copy REDA_Sequence_copy
1544 #define DDS_UntypedSampleSeq_is_equal REDA_Sequence_is_equal
1545 #define DDS_UntypedSampleSeq_loan_contiguous REDA_Sequence_loan_contiguous
1546 #define DDS_UntypedSampleSeq_loan_discontiguous REDA_Sequence_loan_discontiguous
1547 #define DDS_UntypedSampleSeq_unloan REDA_Sequence_unloan
1548 #define DDS_UntypedSampleSeq_has_ownership REDA_Sequence_has_ownership
1549 #define DDS_UntypedSampleSeq_get_contiguous_buffer REDA_Sequence_get_buffer
1550 #define DDS_UntypedSampleSeq_set_contiguous_buffer REDA_Sequence_set_buffer
1551 #define DDS_UntypedSampleSeq_has_discontiguous_buffer REDA_Sequence_has_discontiguous_buffer
1552 #define DDS_UntypedSampleSeq_get_token REDA_Sequence_get_token
1553 #define DDS_UntypedSampleSeq_set_token REDA_Sequence_set_token
1554 
1555 /********************* (Untyped) DataReader API ****************************/
1556 /*ce \dref_DataReader_read
1557  */
1558 DDSCDllExport DDS_ReturnCode_t
1560  DDS_DataReader *self,
1561  struct DDS_UntypedSampleSeq *received_data,
1562  struct DDS_SampleInfoSeq *info_seq,
1563  DDS_Long max_samples,
1564  DDS_SampleStateMask sample_states,
1565  DDS_ViewStateMask view_states,
1566  DDS_InstanceStateMask instance_states);
1567 
1568 /*ce \dref_DataReader_take
1569  */
1570 DDSCDllExport DDS_ReturnCode_t
1572  DDS_DataReader *self,
1573  struct DDS_UntypedSampleSeq *received_data,
1574  struct DDS_SampleInfoSeq *info_seq,
1575  DDS_Long max_samples,
1576  DDS_SampleStateMask sample_states,
1577  DDS_ViewStateMask view_states,
1578  DDS_InstanceStateMask instance_states);
1579 
1580 /*ce \dref_DataReader_read_next_sample
1581  */
1582 DDSCDllExport DDS_ReturnCode_t
1584  DDS_DataReader *self,
1585  void *received_data,
1586  struct DDS_SampleInfo *sample_info);
1587 
1588 /*ce \dref_DataReader_take_next_sample
1589  */
1590 DDSCDllExport DDS_ReturnCode_t
1592  DDS_DataReader *self,
1593  void *received_data,
1594  struct DDS_SampleInfo *sample_info);
1595 
1596 /*ce \dref_DataReader_read_instance
1597  */
1598 DDSCDllExport DDS_ReturnCode_t
1600  DDS_DataReader *self,
1601  struct DDS_UntypedSampleSeq *received_data,
1602  struct DDS_SampleInfoSeq *info_seq,
1603  DDS_Long max_samples,
1604  const DDS_InstanceHandle_t *a_handle,
1605  DDS_SampleStateMask sample_states,
1606  DDS_ViewStateMask view_states,
1607  DDS_InstanceStateMask instance_states);
1608 
1609 /*ce \dref_DataReader_take_instance
1610  */
1611 DDSCDllExport DDS_ReturnCode_t
1613  DDS_DataReader *self,
1614  struct DDS_UntypedSampleSeq *received_data,
1615  struct DDS_SampleInfoSeq *info_seq,
1616  DDS_Long max_samples,
1617  const DDS_InstanceHandle_t *a_handle,
1618  DDS_SampleStateMask sample_states,
1619  DDS_ViewStateMask view_states,
1620  DDS_InstanceStateMask instance_states);
1621 
1622 
1623 /*ce \dref_DataReader_return_loan
1624  */
1625 DDSCDllExport DDS_ReturnCode_t
1627  DDS_DataReader *self,
1628  struct DDS_UntypedSampleSeq *received_data,
1629  struct DDS_SampleInfoSeq *info_seq);
1630 
1631 /*ce \dref_DataReader_lookup_instance
1632  */
1633 DDSCDllExport DDS_InstanceHandle_t
1635  const void *key_holder);
1636 
1637 /*ci
1638  * \brief Inform a data-reader that liveliness has been lost on a remote writer
1639  *
1640  * \details
1641  * Inform a data-reader that liveliness has been lost on a remote writer.
1642  * This causes the remote writer to be deleted from the data-reader's history
1643  * cache if it is known to the data-reader and exists in the history cache.
1644  *
1645  * \param[in] self The data-reader the liveliness is lost for
1646  * \param[in] publication_handle The publication handle for the remote writer
1647  * that has lost liveliness.
1648  */
1649 DDSCDllExport void
1650 DDS_DataReader_liveliness_lost(DDS_DataReader *self,
1651  DDS_InstanceHandle_t *publication_handle);
1652 
1653 /*ci
1654  * \brief Add an anonymous route to a DDS DataReader
1655  *
1656  * \details
1657  * This function adds an anonymous route to a DataWriter. An anonymous
1658  * route is a route with no state information and is typically used
1659  * by a DDS participant reader to listen to discovery traffic from other
1660  * participants in a domain.
1661  *
1662  * \param[in] self The datareader to add the route to
1663  * \param[in] src_writer The peer writer to listen to
1664  * \param[in] from_address The address to listen for traffic on
1665  *
1666  * \return DDS_BOOLEAN_TRUE on success, DDS_BOOLEAN_FALSE on failure
1667  */
1668 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1669 DDS_DataReader_add_anonymous_route(DDS_DataReader *self,
1670  struct NETIO_Address *src_writer,
1671  struct NETIO_Address *from_address);
1672 
1673 #ifndef RTI_CERT
1674 /*ci
1675  * \brief Remove an anonymous route from a DDS DataReader
1676  *
1677  * \details
1678  * This function removes an anonymous route from a DataReader. An anonymous
1679  * route is a route with no state information and is typically used
1680  * by a DDS participant to listen to discovery traffic from other
1681  * participants in a domain. This function stops listening on traffic
1682  * from a particular address.
1683  *
1684  * \param[in] self The datareader to remove the route from
1685  * \param[in] src_writer The peer writer to stop listening to
1686  * \param[in] from_address The address to stop listening on
1687  *
1688  * \return DDS_BOOLEAN_TRUE on success, DDS_BOOLEAN_FALSE on failure
1689  */
1690 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1691 DDS_DataReader_delete_anonymous_route(DDS_DataReader *self,
1692  struct NETIO_Address *src_writer,
1693  struct NETIO_Address *from_address);
1694 #endif /* !RTI_CERT */
1695 
1696 struct DDS_DataWriterQos;
1697 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1698 DDS_DataReader_add_route(DDS_DataReader *self,
1699  const DDS_BuiltinTopicKey_t *key,
1700  const struct DDS_DataWriterQos *const qos,
1701  const struct DDS_LocatorSeq *uc_locator,
1702  const struct DDS_LocatorSeq *mc_locator,
1703  RTI_BOOL *route_existed);
1704 
1705 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1706 DDS_DataReader_delete_route(DDS_DataReader *self,
1707  const DDS_BuiltinTopicKey_t *key,
1708  const struct DDS_LocatorSeq *uc_locator,
1709  const struct DDS_LocatorSeq *mc_locator,
1710  RTI_BOOL *route_existed);
1711 
1712 /* ----------------------------------------------------------------- */
1713 
1714 
1715 #ifdef __cplusplus
1716 } /* extern "C" */
1717 #endif
1718 
1719 
1720 #endif /* dds_c_subscription_h */

RTI Connext DDS Micro Version 2.4.11 Copyright © Mon Jul 23 2018 Real-Time Innovations, Inc