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

RTI Connext DDS Micro Version 2.4.6 Copyright © Mon Jan 25 2016 Real-Time Innovations, Inc