RTI Connext DDS Micro  Version 2.4.10
 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 Reserved, for internal use
647  */
648  void *reserved_data;
649 };
650 
651 #if DDS_INCLUDE_SAMPLE_INFO_RANKS
652 #define DDS_SampleInfo_INITIALIZE_RANKS 0,0,0,0,0,
653 #else
654 #define DDS_SampleInfo_INITIALIZE_RANKS
655 #endif
656 
657 /*ci
658  * \brief Initialized for the DDS_SampleInfo structure
659  */
660 #define DDS_SampleInfo_INITIALIZER \
661 {\
662  DDS_NOT_READ_SAMPLE_STATE,\
663  DDS_NEW_VIEW_STATE,\
664  DDS_ALIVE_INSTANCE_STATE,\
665  {0,0},DDS_HANDLE_NIL_NATIVE,\
666  DDS_HANDLE_NIL_NATIVE, \
667  DDS_SampleInfo_INITIALIZE_RANKS \
668  RTI_FALSE,{0,0},\
669  REDA_SEQUENCE_NUMBER_ZERO,\
670  NULL\
671 }
672 
673 #ifdef __cplusplus
674 } /* extern "C" */
675 #endif
676 
677 #define T struct DDS_SampleInfo
678 #define TSeq DDS_SampleInfoSeq
679 #define REDA_SEQUENCE_API REDA_SEQUENCE_API_FULL
680 #include <reda/reda_sequence_decl.h>
681 
682 #ifdef __cplusplus
683 extern "C" {
684 #endif
685 
686 #ifdef DOXYGEN_DOCUMENTATION_ONLY
687 
688 /*ce \dref_SampleInfoSeq
689  */
691 #endif
692 
693 #ifdef __cplusplus
694 } /* extern "C" */
695 #endif
696 
697 /* ------------------------- */
698 /* Sample Lost Status */
699 /* ------------------------- */
700 
701 /*ce \dref_SampleLostStatusKind
702  */
703 typedef enum
704 {
705  /*ce \dref_SampleLostStatusKind_NOT_LOST
706  */
708 
709  /*ce \dref_SampleLostStatusKind_BY_DATAWRITER
710  */
712 
713  /*ce \dref_SampleLostStatusKind_BY_MAX_SAMPLES_LIMIT
714  */
716 
717  /*ce \dref_SampleLostStatusKind_BY_HISTORY_DEPTH_LIMIT
718  */
720 
721  /*ce \dref_SampleLostStatusKind_BY_META_SAMPLE_LIMIT
722  */
724 
725  /*ce \dref_SampleLostStatusKind_BY_NOT_READ_ON_CACHE_DELETION
726  */
729 
730 /*ce \dref_SampleLostStatus
731  */
732 struct DDSCPPDllExport DDS_SampleLostStatus
733 {
734  /*ce \dref_SampleLostStatus_total_count
735  */
737 
738  /*ce \dref_SampleLostStatus_total_count_change
739  */
741 
742  /*ce \dref_SampleLostStatus_reason
743  */
745 
746  /*ce \dref_SampleLostStatus_sample_info
747  */
748  struct DDS_SampleInfo sample_info;
749 
750  DDSC_CPP_STATUS_METHODS(DDS_SampleLostStatus)
751 };
752 
753 /*ce \dref_SampleLostStatus_INITIALIZER
754  */
755 #define DDS_SampleLostStatus_INITIALIZER \
756 { \
757  0L, 0L,DDS_SAMPLE_LOST_NOT_LOST,DDS_SampleInfo_INITIALIZER \
758 }
759 
760 /*ci
761  * \brief Reset the changed counters in DDS_SampleLostStatus
762  *
763  * \param[in] s Structure to clear
764  */
765 DDSCDllExport void
766 DDS_SampleLostStatus_reset(struct DDS_SampleLostStatus *s);
767 
768 /* ================================================================= */
769 /* QoS */
770 /* ================================================================= */
771 
772 /* --------------------- */
773 /* DataReader QoS struct */
774 /* --------------------- */
775 
776 /*i \dref_DataReaderData
777  */
778 struct DDS_DataReaderData
779 {
780  /*ci
781  * \brief Pointer to the datareader specific unicast locators, if any
782  */
783  struct DDS_LocatorSeq *unicast_locator;
784 
785  /*ci
786  * \brief Pointer to the DataReader specific multicast locators, if any
787  */
788  struct DDS_LocatorSeq *multicast_locator;
789 };
790 
791 /*ce \dref_DataReaderQos
792  */
793 struct DDSCPPDllExport DDS_DataReaderQos
794 {
795  /*ce \dref_DataReaderQos_deadline
796  */
797  struct DDS_DeadlineQosPolicy deadline;
798 
799  /*ce \dref_DataReaderQos_liveliness
800  */
801  struct DDS_LivelinessQosPolicy liveliness;
802 
803  /*ce \dref_DataReaderQos_history
804  */
805  struct DDS_HistoryQosPolicy history;
806 
807  /*ce \dref_DataReaderQos_resource_limits
808  */
809  struct DDS_ResourceLimitsQosPolicy resource_limits;
810 
811  /*ce \dref_DataReaderQos_ownership
812  */
813  struct DDS_OwnershipQosPolicy ownership;
814 
815  /*ce \dref_DataReaderQos_reliability
816  */
817  struct DDS_ReliabilityQosPolicy reliability;
818 
819  /*ce \dref_DataReaderQos_durability
820  */
821  struct DDS_DurabilityQosPolicy durability;
822 
823  /*e \dref_DataReaderQos_destination_order
824  */
825  struct DDS_DestinationOrderQosPolicy destination_order;
826 
827  /* --- Extensions: ---------------------------------------------------- */
828  /*i \dref_DataWriterQos_type_support
829  */
830  struct DDS_TypeSupportQosPolicy type_support;
831 
832  /*ce \dref_DataReaderQos_protocol
833  */
835 
836  /*ce \dref_DataReaderQos_transport
837  */
838  struct DDS_TransportQosPolicy transport;
839 
840  /*ce \dref_DataReaderQos_reader_resource_limits
841  */
842  struct DDS_DataReaderResourceLimitsQosPolicy reader_resource_limits;
843 
844  /*i \dref_DataReaderQos_management
845  */
846  struct RTI_ManagementQosPolicy management;
847 
848  /*i \dref_DataReaderQos_data
849  */
850  struct DDS_DataReaderData *data;
851 
852  DDSC_CPP_QOS_METHODS(DDS_DataReaderQos)
853 };
854 
855 #ifdef __cplusplus
856 extern "C" {
857 #endif
858 
859 /*ce \dref_DataReaderQos_initialize
860  */
861 DDSCDllExport DDS_ReturnCode_t
863 
864 /*ce \dref_DataReaderQos_copy
865  */
866 DDSCDllExport DDS_ReturnCode_t
868  struct DDS_DataReaderQos *self,
869  const struct DDS_DataReaderQos *source);
870 
871 
872 /*ci
873  * \brief Compare two DDS_DataReaderQos policies for equality
874  *
875  * \param[in] left The left side of the comparison
876  * \param[in] right The right side of the comparison
877  *
878  * \return DDS_BOOLEAN_TRUE if the structures are equal,
879  * DDS_BOOLEAN_TRUE otherwise
880  */
881 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
882 DDS_DataReaderQos_is_equal(const struct DDS_DataReaderQos *left,
883  const struct DDS_DataReaderQos *right);
884 
885 #ifndef RTI_CERT
886 /*ce \dref_DataReaderQos_finalize
887  */
888 DDSCDllExport DDS_ReturnCode_t
890 #endif
891 
892 /*ce \dref_DataReaderQos_INITIALIZER
893  */
894 #define DDS_DataReaderQos_INITIALIZER { \
895  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
896  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
897  DDS_HISTORY_QOS_POLICY_DEFAULT, \
898  DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT, \
899  DDS_OWNERSHIP_QOS_POLICY_DEFAULT, \
900  DDS_RELIABILITY_QOS_POLICY_DEFAULT, \
901  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
902  DDS_DESTINATION_ORDER_QOS_POLICY_DEFAULT, \
903  DDS_TYPESUPPORT_QOS_POLICY_DEFAULT, \
904  DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT, \
905  DDS_TRANSPORT_QOS_POLICY_DEFAULT, \
906  DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT, \
907  RTI_MANAGEMENT_QOS_POLICY_DEFAULT, \
908  NULL \
909 }
910 
911 #ifdef __cplusplus
912 } /* extern "C" */
913 #endif
914 
915 /* --------------------- */
916 /* Subscriber QoS struct */
917 /* --------------------- */
918 
919 /*ce \dref_SubscriberQos
920  */
921 struct DDSCPPDllExport DDS_SubscriberQos
922 {
923  /*ce \dref_SubscriberQos_entity_factory
924  */
925  struct DDS_EntityFactoryQosPolicy entity_factory;
926 
927  /*i \dref_SubscriberQos_management
928  */
929  struct RTI_ManagementQosPolicy management;
930 
931  DDSC_CPP_QOS_METHODS(DDS_SubscriberQos)
932 };
933 
934 
935 #ifdef __cplusplus
936 extern "C" {
937 #endif
938 
939 /*ce \dref_SubscriberQos_initialize
940  */
941 DDSCDllExport DDS_ReturnCode_t
943 
944 /*ce \dref_SubscriberQos_copy
945  */
946 DDSCDllExport DDS_ReturnCode_t
948  struct DDS_SubscriberQos *self,
949  const struct DDS_SubscriberQos *source);
950 
951 /*ci
952  * \brief Compare two DDS_SubscriberQos policies for equality
953  *
954  * \param[in] self The left side of the comparison
955  * \param[in] source The right side of the comparison
956  *
957  * \return DDS_BOOLEAN_TRUE if the structures are equal,
958  * DDS_BOOLEAN_TRUE otherwise
959  */
960 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
961 DDS_SubscriberQos_is_equal(const struct DDS_SubscriberQos *self,
962  const struct DDS_SubscriberQos *source);
963 
964 #ifndef RTI_CERT
965 /*ce \dref_SubscriberQos_finalize
966  */
967 DDSCDllExport DDS_ReturnCode_t
969 #endif
970 
971 /*ce \dref_SubscriberQos_INITIALIZER
972  */
973 #define DDS_SubscriberQos_INITIALIZER { \
974  DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT, \
975  RTI_MANAGEMENT_QOS_POLICY_DEFAULT \
976 }
977 
978 /* ================================================================= */
979 /* Listeners */
980 /* ================================================================= */
981 
982 /*ci @ingroup DDSReaderModule
983  @brief Pointer to DDS_DataReader
984  */
985 typedef DDS_DataReader *DDS_DataReader_ptr;
986 
987 /* -------------------------------------- */
988 /* DataReader Listener callback typedefs */
989 /* -------------------------------------- */
990 
991 /*ce \dref_DataReaderListener_RequestedDeadlineMissedCallback
992  */
993 typedef void
995  void *listener_data,
996  DDS_DataReader* reader,
997  const struct DDS_RequestedDeadlineMissedStatus *status);
998 
999 
1000 /*ce \dref_DataReaderListener_LivelinessChangedCallback
1001  */
1002 typedef void
1004  void *listener_data,
1005  DDS_DataReader *reader,
1006  const struct DDS_LivelinessChangedStatus *status);
1007 
1008 /*ce \dref_DataReaderListener_RequestedIncompatibleQosCallback
1009  */
1010 typedef void
1012  void *listener_data,
1013  DDS_DataReader *reader,
1014  const struct DDS_RequestedIncompatibleQosStatus *status);
1015 
1016 /*ce \dref_DataReaderListener_SampleRejectedCallback
1017  */
1018 typedef void
1020  void *listener_data,
1021  DDS_DataReader *reader,
1022  const struct DDS_SampleRejectedStatus *status);
1023 
1024 /*ce \dref_DataReaderListener_DataAvailableCallback
1025  */
1026 typedef void
1028  void *listener_data,
1029  DDS_DataReader *reader);
1030 
1031 /*ce \dref_DataReaderListener_SubscriptionMatchedCallback
1032  */
1033 typedef void
1035  void *listener_data,
1036  DDS_DataReader *reader,
1037  const struct DDS_SubscriptionMatchedStatus *status);
1038 
1039 /*ce \dref_DataReaderListener_SampleLostCallback
1040  */
1041 typedef void
1043  void *listener_data,
1044  DDS_DataReader *reader,
1045  const struct DDS_SampleLostStatus *status);
1046 
1047 /*ce \dref_DataReaderListener_InstanceReplacedCallback
1048  */
1049 typedef void
1051  void *listener_data,
1052  DDS_DataReader *reader,
1053  const struct DDS_DataReaderInstanceReplacedStatus *status);
1054 
1055 #if DOXYGEN_DOCUMENTATION_ONLY
1056 /*ce \dref_DataReaderListener_BeforeSampleDeserializeCallback
1057  */
1058 typedef DDS_Boolean
1060  void *listener_data,
1061  DDS_DataReader *reader,
1062  struct NDDS_Type_Plugin *plugin,
1063  struct CDR_Stream_t *stream,
1064  DDS_Boolean *dropped);
1065 #else
1066 
1067 FUNCTION_MUST_TYPEDEF(
1070  void *listener_data,
1071  DDS_DataReader *reader,
1072  struct NDDS_Type_Plugin *plugin,
1073  struct CDR_Stream_t *stream,
1074  DDS_Boolean *dropped)
1075 )
1076 #endif
1077 
1078 #if DOXYGEN_DOCUMENTATION_ONLY
1079 /*ce \dref_DataReaderListener_BeforeSampleCommitCallback
1080  */
1081 typedef DDS_Boolean
1083  void *listener_data,
1084  DDS_DataReader *reader,
1085  const void *const sample,
1086  DDS_Boolean *dropped);
1087 #else
1088 
1089 FUNCTION_MUST_TYPEDEF(
1092  void *listener_data,
1093  DDS_DataReader *reader,
1094  const void *const sample,
1095  const struct DDS_SampleInfo *const sample_info,
1096  DDS_Boolean *dropped)
1097 )
1098 #endif
1099 
1100 /* -------------------------- */
1101 /* DataReader Listener struct */
1102 /* -------------------------- */
1103 
1104 /*ce \dref_DataReaderListener
1105  */
1107 {
1108  /*ce \dref_DataReaderListener_as_listener
1109  */
1111 
1112  /*ce \dref_DataReaderListener_on_requested_deadline_missed
1113  */
1116 
1117  /*ce \dref_DataReaderListener_on_requested_incompatible_qos
1118  */
1121 
1122  /*ce \dref_DataReaderListener_on_sample_rejected
1123  */
1126 
1127  /*ce \dref_DataReaderListener_on_liveliness_changed
1128  */
1131 
1132  /*ce \dref_DataReaderListener_on_data_available
1133  */
1136 
1137  /*ce \dref_DataReaderListener_on_subscription_matched
1138  */
1141 
1142  /*ce \dref_DataReaderListener_on_sample_lost
1143  */
1146 
1147  /*ce \dref_DataReaderListener_on_before_sample_deserialize
1148  */
1151 
1152  /*ce \dref_DataReaderListener_on_before_sample_commit
1153  */
1156 
1157  /*ce \dref_DataReaderListener_on_instance_replaced
1158  */
1161 };
1162 
1163 /*ce \dref_DataReaderListener_INITIALIZER
1164  */
1165 #define DDS_DataReaderListener_INITIALIZER \
1166 {\
1167  DDS_Listener_INITIALIZER, \
1168  (DDS_DataReaderListener_RequestedDeadlineMissedCallback)NULL, \
1169  (DDS_DataReaderListener_RequestedIncompatibleQosCallback)NULL, \
1170  (DDS_DataReaderListener_SampleRejectedCallback)NULL, \
1171  (DDS_DataReaderListener_LivelinessChangedCallback)NULL, \
1172  (DDS_DataReaderListener_DataAvailableCallback)NULL, \
1173  (DDS_DataReaderListener_SubscriptionMatchedCallback)NULL, \
1174  (DDS_DataReaderListener_SampleLostCallback)NULL,\
1175  (DDS_DataReaderListener_BeforeSampleDeserializeCallback)NULL,\
1176  (DDS_DataReaderListener_BeforeSampleCommitCallback)NULL,\
1177  (DDS_DataReaderListener_InstanceReplacedCallback)NULL\
1178 }
1179 
1180 /* -------------------------------------- */
1181 /* Subscriber Listener callback typedefs */
1182 /* -------------------------------------- */
1183 
1184 /*ce \dref_SubscriberListener_DataOnReadersCallback
1185  */
1186 typedef void
1188  void *listener_data,
1189  DDS_Subscriber *sub);
1190 
1191 
1192 /* ----------------------------- */
1193 /* Subscriber Listener struct */
1194 /* ----------------------------- */
1195 
1196 /*ce \dref_SubscriberListener
1197  */
1199 {
1200 
1201  /*ce \dref_SubscriberListener_as_datareaderlistener
1202  */
1204 
1205  /*ce \dref_SubscriberListener_on_data_on_readers
1206  */
1208 };
1209 
1210 /*ce \dref_SubscriberListener_INITIALIZER
1211  */
1212 #define DDS_SubscriberListener_INITIALIZER \
1213  { DDS_DataReaderListener_INITIALIZER, \
1214  (DDS_SubscriberListener_DataOnReadersCallback)NULL }
1215 
1216 /* ================================================================= */
1217 /* Subscriber */
1218 /* ================================================================= */
1219 
1220 /*ce \dref_DATAREADER_QOS_DEFAULT
1221  */
1222 extern DDSCDllVariable const struct DDS_DataReaderQos
1224 
1225 /*ce \dref_DATAREADER_QOS_USE_TOPIC_QOS
1226  */
1227 extern DDSCDllVariable const struct DDS_DataReaderQos
1229 
1230 /* ----------------------------------------------------------------- */
1231 #define DDS_Subscriber_as_entity(subscriberPtr) \
1232  ((DDS_Entity*) subscriberPtr)
1233 
1234 /* ----------------------------------------------------------------- */
1235 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1236 
1237 /*ce \dref_Subscriber_as_entity
1238  */
1240 
1241 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1242 
1243 /* ----------------------------------------------------------------- */
1244 /*ce \dref_Subscriber_get_default_datareader_qos
1245  */
1246 /* #if INCLUDE_API_QOS */
1247 DDSCDllExport DDS_ReturnCode_t
1249  DDS_Subscriber *self,
1250  struct DDS_DataReaderQos *qos);
1251 
1252 /* ----------------------------------------------------------------- */
1253 /*ce \dref_Subscriber_set_default_datareader_qos
1254  */
1255 /* #if INCLUDE_API_QOS */
1256 DDSCDllExport DDS_ReturnCode_t
1258  DDS_Subscriber *self,
1259  const struct DDS_DataReaderQos *qos);
1260 
1261 /* ----------------------------------------------------------------- */
1262 /*ce \dref_Subscriber_create_datareader
1263  */
1264 DDSCDllExport DDS_DataReader*
1266  DDS_TopicDescription *topic,
1267  const struct DDS_DataReaderQos *qos,
1268  const struct DDS_DataReaderListener *listener,
1269  DDS_StatusMask mask);
1270 
1271 /* ----------------------------------------------------------------- */
1272 #ifndef RTI_CERT
1273 /*ce \dref_Subscriber_delete_datareader
1274  */
1275 DDSCDllExport DDS_ReturnCode_t
1277  DDS_Subscriber *self,
1278  DDS_DataReader *a_datareader);
1279 #endif
1280 
1281 /* ----------------------------------------------------------------- */
1282 /*ce \dref_Subscriber_enable
1283  */
1284 DDSCDllExport DDS_ReturnCode_t
1286 
1287 /* ----------------------------------------------------------------- */
1288 #ifndef RTI_CERT
1289 /*ce \dref_Subscriber_delete_contained_entities
1290  */
1291 DDSCDllExport DDS_ReturnCode_t
1293 #endif
1294 
1295 /* ----------------------------------------------------------------- */
1296 /* #ifdef INCLUDE_API_LOOKUP */
1297 /*ce \dref_Subscriber_lookup_datareader
1298  */
1299 DDSCDllExport DDS_DataReader*
1301  DDS_Subscriber *self,
1302  const char *topic_name);
1303 
1304 /* ----------------------------------------------------------------- */
1305 /*ce \dref_Subscriber_get_participant
1306  */
1307 DDSCDllExport DDS_DomainParticipant*
1309 
1310 
1311 /* ----------------------------------------------------------------- */
1312 #if INCLUDE_API_QOS
1313 /*ce \dref_Subscriber_set_qos
1314  */
1315 DDSCDllExport DDS_ReturnCode_t
1317  DDS_Subscriber* self,
1318  const struct DDS_SubscriberQos *qos);
1319 
1320 /* ----------------------------------------------------------------- */
1321 /*ce \dref_Subscriber_get_qos
1322  */
1323 DDSCDllExport DDS_ReturnCode_t
1325  DDS_Subscriber *self,
1326  struct DDS_SubscriberQos *qos);
1327 #endif
1328 
1329 /* ----------------------------------------------------------------- */
1330 
1331 #ifndef RTI_CERT
1332 /*ce \dref_Subscriber_set_listener
1333  */
1334 DDSCDllExport DDS_ReturnCode_t
1336  DDS_Subscriber * self,
1337  const struct DDS_SubscriberListener *l,
1338  DDS_StatusMask mask);
1339 #endif
1340 
1341 #ifndef RTI_CERT
1342 /*ce \dref_Subscriber_get_listener
1343  */
1344 DDSCDllExport struct DDS_SubscriberListener
1346 #endif
1347 
1348 /* ================================================================= */
1349 /* Data Reader */
1350 /* ================================================================= */
1351 #define DDS_DataReader_as_entity(dataReaderPtr) \
1352  ((DDS_Entity*) dataReaderPtr)
1353 
1354 /* ----------------------------------------------------------------- */
1355 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1356 /*ce \dref_DataReader_as_entity
1357  */
1358 DDS_Entity *
1360 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1361 
1362 /* ----------------------------------------------------------------- */
1363 /*ce \dref_DataReader_enable
1364  */
1365 DDSCDllExport DDS_ReturnCode_t
1367 
1368 /* ----------------------------------------------------------------- */
1369 #if INCLUDE_API_LOOKUP
1370 /*ce \dref_DataReader_get_matched_publications
1371  */
1372 DDSCDllExport DDS_ReturnCode_t
1374  DDS_DataReader *self,
1375  struct DDS_InstanceHandleSeq *publication_handles);
1376 #endif /* INCLUDE_API_LOOKUP */
1377 
1379 /* ----------------------------------------------------------------- */
1380 #if INCLUDE_API_LOOKUP
1381 /*ce \dref_DataReader_get_matched_publication_data
1382  */
1383 DDSCDllExport DDS_ReturnCode_t
1385  DDS_DataReader *self,
1386  struct DDS_PublicationBuiltinTopicData *publication_data,
1387  const DDS_InstanceHandle_t *publication_handle);
1388 #endif /* INCLUDE_API_LOOKUP */
1389 
1390 /* ----------------------------------------------------------------- */
1391 /*ce \dref_DataReader_get_topicdescription
1392  */
1393 DDSCDllExport DDS_TopicDescription*
1395 
1396 /* ----------------------------------------------------------------- */
1397 /*ce \dref_DataReader_get_subscriber
1398  */
1399 DDSCDllExport DDS_Subscriber*
1401 
1402 
1403 /* ----------------------------------------------------------------- */
1404 /*ce \dref_DataReader_get_sample_rejected_status
1405  */
1406 DDSCDllExport DDS_ReturnCode_t
1408  DDS_DataReader *self,
1409  struct DDS_SampleRejectedStatus *status);
1410 
1411 /* ----------------------------------------------------------------- */
1412 /*ce \dref_DataReader_get_liveliness_changed_status
1413  */
1414 DDSCDllExport DDS_ReturnCode_t
1416  DDS_DataReader *self,
1417  struct DDS_LivelinessChangedStatus *status);
1418 
1419 /* ----------------------------------------------------------------- */
1420 /*ce \dref_DataReader_get_requested_deadline_missed_status
1421  */
1422 DDSCDllExport DDS_ReturnCode_t
1424  DDS_DataReader *self,
1425  struct DDS_RequestedDeadlineMissedStatus *status);
1426 
1427 /* ----------------------------------------------------------------- */
1428 /*ce \dref_DataReader_get_requested_incompatible_qos_status
1429  */
1430 DDSCDllExport DDS_ReturnCode_t
1432  DDS_DataReader *self,
1433  struct DDS_RequestedIncompatibleQosStatus *status);
1434 
1435 /* ----------------------------------------------------------------- */
1436 /*ce \dref_DataReader_get_subscription_matched_status
1437  */
1438 DDSCDllExport DDS_ReturnCode_t
1440  DDS_DataReader *self,
1441  struct DDS_SubscriptionMatchedStatus *status);
1442 
1443 /* ----------------------------------------------------------------- */
1444 /*ce \dref_DataReader_get_sample_lost_status
1445  */
1446 DDSCDllExport DDS_ReturnCode_t
1448  DDS_DataReader *self,
1449  struct DDS_SampleLostStatus *status);
1450 
1451 /* ----------------------------------------------------------------- */
1452 /*ce \dref_DataReader_get_instance_replaced_status
1453  */
1454 DDSCDllExport DDS_ReturnCode_t
1456  DDS_DataReader *self,
1457  struct DDS_DataReaderInstanceReplacedStatus *status);
1458 
1459 /*ci
1460  * \brief Get a pointer to the DataReader's Qos policy
1461  *
1462  * \details
1463  * NOTE: It is up to the caller to ensure the datareader is not deleted while
1464  * the Qos is being accessed.
1465  *
1466  * \return Pointer to DDS_DataReaderQos*
1467  */
1468 DDSCDllExport struct DDS_DataReaderQos*
1469 DDS_DataReader_get_qos_ref(DDS_DataReader *self);
1470 
1471 /* ----------------------------------------------------------------- */
1472 #if INCLUDE_API_QOS
1473 /*ce \dref_DataReader_set_qos
1474  */
1475 DDSCDllExport DDS_ReturnCode_t
1477  DDS_DataReader* self,
1478  const struct DDS_DataReaderQos *qos);
1479 
1480 /* ----------------------------------------------------------------- */
1481 /*ce \dref_DataReader_get_qos
1482  */
1483 DDSCDllExport DDS_ReturnCode_t
1485  struct DDS_DataReaderQos *qos);
1486 #endif
1487 
1488 /* ----------------------------------------------------------------- */
1489 #ifndef RTI_CERT
1490 /*ce \dref_DataReader_set_listener
1491  */
1492 DDSCDllExport DDS_ReturnCode_t
1494  DDS_DataReader * self,
1495  const struct DDS_DataReaderListener *l,
1496  DDS_StatusMask mask);
1497 #endif
1498 
1499 /* ----------------------------------------------------------------- */
1500 #ifndef RTI_CERT
1501 /*ce \dref_DataReader_get_listener
1502  */
1503 DDSCDllExport struct DDS_DataReaderListener
1505 #endif
1506 /* ----------------------------------------------------------------- */
1507 
1508 /*ce \dref_DataReader_get_instance_replaced_status
1509  */
1512  struct DDS_DataReaderInstanceReplacedStatus *status);
1513 
1514 /* ----------------------------------------------------------------- */
1515 
1516 #ifdef __cplusplus
1517 }
1518 #endif
1519 
1520 #include "dds_c/dds_c_rh_plugin.h"
1521 
1522 #ifdef __cplusplus
1523 extern "C"
1524 {
1525 #endif
1526 
1527 /* REDA_SEQUENCE_API is always assumed to be FULL for DDS_UntypedSampleSeq */
1528 #define DDS_UntypedSampleSeq REDA_Sequence
1529 #define DDS_UntypedSampleSeq_initialize REDA_Sequence_initialize
1530 #ifndef RTI_CERT
1531 #define DDS_UntypedSampleSeq_finalize REDA_Sequence_finalize
1532 #endif /* !RTI_CERT */
1533 #define DDS_UntypedSampleSeq_get_maximum REDA_Sequence_get_maximum
1534 #define DDS_UntypedSampleSeq_set_maximum REDA_Sequence_set_maximum
1535 #define DDS_UntypedSampleSeq_get_length REDA_Sequence_get_length
1536 #define DDS_UntypedSampleSeq_set_length REDA_Sequence_set_length
1537 #define DDS_UntypedSampleSeq_get_reference REDA_Sequence_get_reference
1538 #define DDS_UntypedSampleSeq_copy REDA_Sequence_copy
1539 #define DDS_UntypedSampleSeq_is_equal REDA_Sequence_is_equal
1540 #define DDS_UntypedSampleSeq_loan_contiguous REDA_Sequence_loan_contiguous
1541 #define DDS_UntypedSampleSeq_loan_discontiguous REDA_Sequence_loan_discontiguous
1542 #define DDS_UntypedSampleSeq_unloan REDA_Sequence_unloan
1543 #define DDS_UntypedSampleSeq_has_ownership REDA_Sequence_has_ownership
1544 #define DDS_UntypedSampleSeq_get_contiguous_buffer REDA_Sequence_get_buffer
1545 #define DDS_UntypedSampleSeq_set_contiguous_buffer REDA_Sequence_set_buffer
1546 #define DDS_UntypedSampleSeq_has_discontiguous_buffer REDA_Sequence_has_discontiguous_buffer
1547 #define DDS_UntypedSampleSeq_get_token REDA_Sequence_get_token
1548 #define DDS_UntypedSampleSeq_set_token REDA_Sequence_set_token
1549 
1550 /********************* (Untyped) DataReader API ****************************/
1551 /*ce \dref_DataReader_read
1552  */
1553 DDSCDllExport DDS_ReturnCode_t
1555  DDS_DataReader *self,
1556  struct DDS_UntypedSampleSeq *received_data,
1557  struct DDS_SampleInfoSeq *info_seq,
1558  DDS_Long max_samples,
1559  DDS_SampleStateMask sample_states,
1560  DDS_ViewStateMask view_states,
1561  DDS_InstanceStateMask instance_states);
1562 
1563 /*ce \dref_DataReader_take
1564  */
1565 DDSCDllExport DDS_ReturnCode_t
1567  DDS_DataReader *self,
1568  struct DDS_UntypedSampleSeq *received_data,
1569  struct DDS_SampleInfoSeq *info_seq,
1570  DDS_Long max_samples,
1571  DDS_SampleStateMask sample_states,
1572  DDS_ViewStateMask view_states,
1573  DDS_InstanceStateMask instance_states);
1574 
1575 /*ce \dref_DataReader_read_next_sample
1576  */
1577 DDSCDllExport DDS_ReturnCode_t
1579  DDS_DataReader *self,
1580  void *received_data,
1581  struct DDS_SampleInfo *sample_info);
1582 
1583 /*ce \dref_DataReader_take_next_sample
1584  */
1585 DDSCDllExport DDS_ReturnCode_t
1587  DDS_DataReader *self,
1588  void *received_data,
1589  struct DDS_SampleInfo *sample_info);
1590 
1591 /*ce \dref_DataReader_read_instance
1592  */
1593 DDSCDllExport DDS_ReturnCode_t
1595  DDS_DataReader *self,
1596  struct DDS_UntypedSampleSeq *received_data,
1597  struct DDS_SampleInfoSeq *info_seq,
1598  DDS_Long max_samples,
1599  const DDS_InstanceHandle_t *a_handle,
1600  DDS_SampleStateMask sample_states,
1601  DDS_ViewStateMask view_states,
1602  DDS_InstanceStateMask instance_states);
1603 
1604 /*ce \dref_DataReader_take_instance
1605  */
1606 DDSCDllExport DDS_ReturnCode_t
1608  DDS_DataReader *self,
1609  struct DDS_UntypedSampleSeq *received_data,
1610  struct DDS_SampleInfoSeq *info_seq,
1611  DDS_Long max_samples,
1612  const DDS_InstanceHandle_t *a_handle,
1613  DDS_SampleStateMask sample_states,
1614  DDS_ViewStateMask view_states,
1615  DDS_InstanceStateMask instance_states);
1616 
1617 
1618 /*ce \dref_DataReader_return_loan
1619  */
1620 DDSCDllExport DDS_ReturnCode_t
1622  DDS_DataReader *self,
1623  struct DDS_UntypedSampleSeq *received_data,
1624  struct DDS_SampleInfoSeq *info_seq);
1625 
1626 /*ce \dref_DataReader_lookup_instance
1627  */
1628 DDSCDllExport DDS_InstanceHandle_t
1630  const void *key_holder);
1631 
1632 /*ci
1633  * \brief Inform a data-reader that liveliness has been lost on a remote writer
1634  *
1635  * \details
1636  * Inform a data-reader that liveliness has been lost on a remote writer.
1637  * This causes the remote writer to be deleted from the data-reader's history
1638  * cache if it is known to the data-reader and exists in the history cache.
1639  *
1640  * \param[in] self The data-reader the liveliness is lost for
1641  * \param[in] publication_handle The publication handle for the remote writer
1642  * that has lost liveliness.
1643  */
1644 DDSCDllExport void
1645 DDS_DataReader_liveliness_lost(DDS_DataReader *self,
1646  DDS_InstanceHandle_t *publication_handle);
1647 
1648 /*ci
1649  * \brief Add an anonymous route to a DDS DataReader
1650  *
1651  * \details
1652  * This function adds an anonymous route to a DataWriter. An anonymous
1653  * route is a route with no state information and is typically used
1654  * by a DDS participant reader to listen to discovery traffic from other
1655  * participants in a domain.
1656  *
1657  * \param[in] self The datareader to add the route to
1658  * \param[in] src_writer The peer writer to listen to
1659  * \param[in] from_address The address to listen for traffic on
1660  *
1661  * \return DDS_BOOLEAN_TRUE on success, DDS_BOOLEAN_FALSE on failure
1662  */
1663 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1664 DDS_DataReader_add_anonymous_route(DDS_DataReader *self,
1665  struct NETIO_Address *src_writer,
1666  struct NETIO_Address *from_address);
1667 
1668 #ifndef RTI_CERT
1669 /*ci
1670  * \brief Remove an anonymous route from a DDS DataReader
1671  *
1672  * \details
1673  * This function removes an anonymous route from a DataReader. An anonymous
1674  * route is a route with no state information and is typically used
1675  * by a DDS participant to listen to discovery traffic from other
1676  * participants in a domain. This function stops listening on traffic
1677  * from a particular address.
1678  *
1679  * \param[in] self The datareader to remove the route from
1680  * \param[in] src_writer The peer writer to stop listening to
1681  * \param[in] from_address The address to stop listening on
1682  *
1683  * \return DDS_BOOLEAN_TRUE on success, DDS_BOOLEAN_FALSE on failure
1684  */
1685 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1686 DDS_DataReader_delete_anonymous_route(DDS_DataReader *self,
1687  struct NETIO_Address *src_writer,
1688  struct NETIO_Address *from_address);
1689 #endif /* !RTI_CERT */
1690 
1691 struct DDS_DataWriterQos;
1692 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1693 DDS_DataReader_add_route(DDS_DataReader *self,
1694  const DDS_BuiltinTopicKey_t *key,
1695  const struct DDS_DataWriterQos *const qos,
1696  const struct DDS_LocatorSeq *uc_locator,
1697  const struct DDS_LocatorSeq *mc_locator,
1698  RTI_BOOL *route_existed);
1699 
1700 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1701 DDS_DataReader_delete_route(DDS_DataReader *self,
1702  const DDS_BuiltinTopicKey_t *key,
1703  const struct DDS_LocatorSeq *uc_locator,
1704  const struct DDS_LocatorSeq *mc_locator,
1705  RTI_BOOL *route_existed);
1706 
1707 /* ----------------------------------------------------------------- */
1708 
1709 
1710 #ifdef __cplusplus
1711 } /* extern "C" */
1712 #endif
1713 
1714 
1715 #endif /* dds_c_subscription_h */

RTI Connext DDS Micro Version 2.4.10 Copyright © Fri Jun 30 2017 Real-Time Innovations, Inc