RTI Connext DDS Micro  Version 2.4.9
 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  /* --- Extensions: ---------------------------------------------------- */
824  /*i \dref_DataWriterQos_type_support
825  */
826  struct DDS_TypeSupportQosPolicy type_support;
827 
828  /*ce \dref_DataReaderQos_protocol
829  */
831 
832  /*ce \dref_DataReaderQos_transport
833  */
834  struct DDS_TransportQosPolicy transport;
835 
836  /*ce \dref_DataReaderQos_reader_resource_limits
837  */
838  struct DDS_DataReaderResourceLimitsQosPolicy reader_resource_limits;
839 
840  /*i \dref_DataReaderQos_management
841  */
842  struct RTI_ManagementQosPolicy management;
843 
844  /*i \dref_DataReaderQos_data
845  */
846  struct DDS_DataReaderData *data;
847 
848  DDSC_CPP_QOS_METHODS(DDS_DataReaderQos)
849 };
850 
851 #ifdef __cplusplus
852 extern "C" {
853 #endif
854 
855 /*ce \dref_DataReaderQos_initialize
856  */
857 DDSCDllExport DDS_ReturnCode_t
859 
860 /*ce \dref_DataReaderQos_copy
861  */
862 DDSCDllExport DDS_ReturnCode_t
864  struct DDS_DataReaderQos *self,
865  const struct DDS_DataReaderQos *source);
866 
867 
868 /*ci
869  * \brief Compare two DDS_DataReaderQos policies for equality
870  *
871  * \param[in] left The left side of the comparison
872  * \param[in] right The right side of the comparison
873  *
874  * \return DDS_BOOLEAN_TRUE if the structures are equal,
875  * DDS_BOOLEAN_TRUE otherwise
876  */
877 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
878 DDS_DataReaderQos_is_equal(const struct DDS_DataReaderQos *left,
879  const struct DDS_DataReaderQos *right);
880 
881 #ifndef RTI_CERT
882 /*ce \dref_DataReaderQos_finalize
883  */
884 DDSCDllExport DDS_ReturnCode_t
886 #endif
887 
888 /*ce \dref_DataReaderQos_INITIALIZER
889  */
890 #define DDS_DataReaderQos_INITIALIZER { \
891  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
892  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
893  DDS_HISTORY_QOS_POLICY_DEFAULT, \
894  DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT, \
895  DDS_OWNERSHIP_QOS_POLICY_DEFAULT, \
896  DDS_RELIABILITY_QOS_POLICY_DEFAULT, \
897  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
898  DDS_TYPESUPPORT_QOS_POLICY_DEFAULT, \
899  DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT, \
900  DDS_TRANSPORT_QOS_POLICY_DEFAULT, \
901  DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT, \
902  RTI_MANAGEMENT_QOS_POLICY_DEFAULT, \
903  NULL \
904 }
905 
906 #ifdef __cplusplus
907 } /* extern "C" */
908 #endif
909 
910 /* --------------------- */
911 /* Subscriber QoS struct */
912 /* --------------------- */
913 
914 /*ce \dref_SubscriberQos
915  */
916 struct DDSCPPDllExport DDS_SubscriberQos
917 {
918  /*ce \dref_SubscriberQos_entity_factory
919  */
920  struct DDS_EntityFactoryQosPolicy entity_factory;
921 
922  /*i \dref_SubscriberQos_management
923  */
924  struct RTI_ManagementQosPolicy management;
925 
926  DDSC_CPP_QOS_METHODS(DDS_SubscriberQos)
927 };
928 
929 
930 #ifdef __cplusplus
931 extern "C" {
932 #endif
933 
934 /*ce \dref_SubscriberQos_initialize
935  */
936 DDSCDllExport DDS_ReturnCode_t
938 
939 /*ce \dref_SubscriberQos_copy
940  */
941 DDSCDllExport DDS_ReturnCode_t
943  struct DDS_SubscriberQos *self,
944  const struct DDS_SubscriberQos *source);
945 
946 /*ci
947  * \brief Compare two DDS_SubscriberQos policies for equality
948  *
949  * \param[in] self The left side of the comparison
950  * \param[in] source The right side of the comparison
951  *
952  * \return DDS_BOOLEAN_TRUE if the structures are equal,
953  * DDS_BOOLEAN_TRUE otherwise
954  */
955 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
956 DDS_SubscriberQos_is_equal(const struct DDS_SubscriberQos *self,
957  const struct DDS_SubscriberQos *source);
958 
959 #ifndef RTI_CERT
960 /*ce \dref_SubscriberQos_finalize
961  */
962 DDSCDllExport DDS_ReturnCode_t
964 #endif
965 
966 /*ce \dref_SubscriberQos_INITIALIZER
967  */
968 #define DDS_SubscriberQos_INITIALIZER { \
969  DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT, \
970  RTI_MANAGEMENT_QOS_POLICY_DEFAULT \
971 }
972 
973 /* ================================================================= */
974 /* Listeners */
975 /* ================================================================= */
976 
977 /*ci @ingroup DDSReaderModule
978  @brief Pointer to DDS_DataReader
979  */
980 typedef DDS_DataReader *DDS_DataReader_ptr;
981 
982 /* -------------------------------------- */
983 /* DataReader Listener callback typedefs */
984 /* -------------------------------------- */
985 
986 /*ce \dref_DataReaderListener_RequestedDeadlineMissedCallback
987  */
988 typedef void
990  void *listener_data,
991  DDS_DataReader* reader,
992  const struct DDS_RequestedDeadlineMissedStatus *status);
993 
994 
995 /*ce \dref_DataReaderListener_LivelinessChangedCallback
996  */
997 typedef void
999  void *listener_data,
1000  DDS_DataReader *reader,
1001  const struct DDS_LivelinessChangedStatus *status);
1002 
1003 /*ce \dref_DataReaderListener_RequestedIncompatibleQosCallback
1004  */
1005 typedef void
1007  void *listener_data,
1008  DDS_DataReader *reader,
1009  const struct DDS_RequestedIncompatibleQosStatus *status);
1010 
1011 /*ce \dref_DataReaderListener_SampleRejectedCallback
1012  */
1013 typedef void
1015  void *listener_data,
1016  DDS_DataReader *reader,
1017  const struct DDS_SampleRejectedStatus *status);
1018 
1019 /*ce \dref_DataReaderListener_DataAvailableCallback
1020  */
1021 typedef void
1023  void *listener_data,
1024  DDS_DataReader *reader);
1025 
1026 /*ce \dref_DataReaderListener_SubscriptionMatchedCallback
1027  */
1028 typedef void
1030  void *listener_data,
1031  DDS_DataReader *reader,
1032  const struct DDS_SubscriptionMatchedStatus *status);
1033 
1034 /*ce \dref_DataReaderListener_SampleLostCallback
1035  */
1036 typedef void
1038  void *listener_data,
1039  DDS_DataReader *reader,
1040  const struct DDS_SampleLostStatus *status);
1041 
1042 /*ce \dref_DataReaderListener_InstanceReplacedCallback
1043  */
1044 typedef void
1046  void *listener_data,
1047  DDS_DataReader *reader,
1048  const struct DDS_DataReaderInstanceReplacedStatus *status);
1049 
1050 #if DOXYGEN_DOCUMENTATION_ONLY
1051 /*ce \dref_DataReaderListener_BeforeSampleDeserializeCallback
1052  */
1053 typedef DDS_Boolean
1055  void *listener_data,
1056  DDS_DataReader *reader,
1057  struct NDDS_Type_Plugin *plugin,
1058  struct CDR_Stream_t *stream,
1059  DDS_Boolean *dropped);
1060 #else
1061 
1062 FUNCTION_MUST_TYPEDEF(
1065  void *listener_data,
1066  DDS_DataReader *reader,
1067  struct NDDS_Type_Plugin *plugin,
1068  struct CDR_Stream_t *stream,
1069  DDS_Boolean *dropped)
1070 )
1071 #endif
1072 
1073 #if DOXYGEN_DOCUMENTATION_ONLY
1074 /*ce \dref_DataReaderListener_BeforeSampleCommitCallback
1075  */
1076 typedef DDS_Boolean
1078  void *listener_data,
1079  DDS_DataReader *reader,
1080  const void *const sample,
1081  DDS_Boolean *dropped);
1082 #else
1083 
1084 FUNCTION_MUST_TYPEDEF(
1087  void *listener_data,
1088  DDS_DataReader *reader,
1089  const void *const sample,
1090  const struct DDS_SampleInfo *const sample_info,
1091  DDS_Boolean *dropped)
1092 )
1093 #endif
1094 
1095 /* -------------------------- */
1096 /* DataReader Listener struct */
1097 /* -------------------------- */
1098 
1099 /*ce \dref_DataReaderListener
1100  */
1102 {
1103  /*ce \dref_DataReaderListener_as_listener
1104  */
1106 
1107  /*ce \dref_DataReaderListener_on_requested_deadline_missed
1108  */
1111 
1112  /*ce \dref_DataReaderListener_on_requested_incompatible_qos
1113  */
1116 
1117  /*ce \dref_DataReaderListener_on_sample_rejected
1118  */
1121 
1122  /*ce \dref_DataReaderListener_on_liveliness_changed
1123  */
1126 
1127  /*ce \dref_DataReaderListener_on_data_available
1128  */
1131 
1132  /*ce \dref_DataReaderListener_on_subscription_matched
1133  */
1136 
1137  /*ce \dref_DataReaderListener_on_sample_lost
1138  */
1141 
1142  /*ce \dref_DataReaderListener_on_before_sample_deserialize
1143  */
1146 
1147  /*ce \dref_DataReaderListener_on_before_sample_commit
1148  */
1151 
1152  /*ce \dref_DataReaderListener_on_instance_replaced
1153  */
1156 };
1157 
1158 /*ce \dref_DataReaderListener_INITIALIZER
1159  */
1160 #define DDS_DataReaderListener_INITIALIZER \
1161 {\
1162  DDS_Listener_INITIALIZER, \
1163  (DDS_DataReaderListener_RequestedDeadlineMissedCallback)NULL, \
1164  (DDS_DataReaderListener_RequestedIncompatibleQosCallback)NULL, \
1165  (DDS_DataReaderListener_SampleRejectedCallback)NULL, \
1166  (DDS_DataReaderListener_LivelinessChangedCallback)NULL, \
1167  (DDS_DataReaderListener_DataAvailableCallback)NULL, \
1168  (DDS_DataReaderListener_SubscriptionMatchedCallback)NULL, \
1169  (DDS_DataReaderListener_SampleLostCallback)NULL,\
1170  (DDS_DataReaderListener_BeforeSampleDeserializeCallback)NULL,\
1171  (DDS_DataReaderListener_BeforeSampleCommitCallback)NULL,\
1172  (DDS_DataReaderListener_InstanceReplacedCallback)NULL\
1173 }
1174 
1175 /* -------------------------------------- */
1176 /* Subscriber Listener callback typedefs */
1177 /* -------------------------------------- */
1178 
1179 /*ce \dref_SubscriberListener_DataOnReadersCallback
1180  */
1181 typedef void
1183  void *listener_data,
1184  DDS_Subscriber *sub);
1185 
1186 
1187 /* ----------------------------- */
1188 /* Subscriber Listener struct */
1189 /* ----------------------------- */
1190 
1191 /*ce \dref_SubscriberListener
1192  */
1194 {
1195 
1196  /*ce \dref_SubscriberListener_as_datareaderlistener
1197  */
1199 
1200  /*ce \dref_SubscriberListener_on_data_on_readers
1201  */
1203 };
1204 
1205 /*ce \dref_SubscriberListener_INITIALIZER
1206  */
1207 #define DDS_SubscriberListener_INITIALIZER \
1208  { DDS_DataReaderListener_INITIALIZER, \
1209  (DDS_SubscriberListener_DataOnReadersCallback)NULL }
1210 
1211 /* ================================================================= */
1212 /* Subscriber */
1213 /* ================================================================= */
1214 
1215 /*ce \dref_DATAREADER_QOS_DEFAULT
1216  */
1217 extern DDSCDllVariable const struct DDS_DataReaderQos
1219 
1220 /*ce \dref_DATAREADER_QOS_USE_TOPIC_QOS
1221  */
1222 extern DDSCDllVariable const struct DDS_DataReaderQos
1224 
1225 /* ----------------------------------------------------------------- */
1226 #define DDS_Subscriber_as_entity(subscriberPtr) \
1227  ((DDS_Entity*) subscriberPtr)
1228 
1229 /* ----------------------------------------------------------------- */
1230 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1231 
1232 /*ce \dref_Subscriber_as_entity
1233  */
1235 
1236 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1237 
1238 /* ----------------------------------------------------------------- */
1239 /*ce \dref_Subscriber_get_default_datareader_qos
1240  */
1241 /* #if INCLUDE_API_QOS */
1242 DDSCDllExport DDS_ReturnCode_t
1244  DDS_Subscriber *self,
1245  struct DDS_DataReaderQos *qos);
1246 
1247 /* ----------------------------------------------------------------- */
1248 /*ce \dref_Subscriber_set_default_datareader_qos
1249  */
1250 /* #if INCLUDE_API_QOS */
1251 DDSCDllExport DDS_ReturnCode_t
1253  DDS_Subscriber *self,
1254  const struct DDS_DataReaderQos *qos);
1255 
1256 /* ----------------------------------------------------------------- */
1257 /*ce \dref_Subscriber_create_datareader
1258  */
1259 DDSCDllExport DDS_DataReader*
1261  DDS_TopicDescription *topic,
1262  const struct DDS_DataReaderQos *qos,
1263  const struct DDS_DataReaderListener *listener,
1264  DDS_StatusMask mask);
1265 
1266 /* ----------------------------------------------------------------- */
1267 #ifndef RTI_CERT
1268 /*ce \dref_Subscriber_delete_datareader
1269  */
1270 DDSCDllExport DDS_ReturnCode_t
1272  DDS_Subscriber *self,
1273  DDS_DataReader *a_datareader);
1274 #endif
1275 
1276 /* ----------------------------------------------------------------- */
1277 /*ce \dref_Subscriber_enable
1278  */
1279 DDSCDllExport DDS_ReturnCode_t
1281 
1282 /* ----------------------------------------------------------------- */
1283 #ifndef RTI_CERT
1284 /*ce \dref_Subscriber_delete_contained_entities
1285  */
1286 DDSCDllExport DDS_ReturnCode_t
1288 #endif
1289 
1290 /* ----------------------------------------------------------------- */
1291 /* #ifdef INCLUDE_API_LOOKUP */
1292 /*ce \dref_Subscriber_lookup_datareader
1293  */
1294 DDSCDllExport DDS_DataReader*
1296  DDS_Subscriber *self,
1297  const char *topic_name);
1298 
1299 /* ----------------------------------------------------------------- */
1300 /*ce \dref_Subscriber_get_participant
1301  */
1302 DDSCDllExport DDS_DomainParticipant*
1304 
1305 
1306 /* ----------------------------------------------------------------- */
1307 #if INCLUDE_API_QOS
1308 /*ce \dref_Subscriber_set_qos
1309  */
1310 DDSCDllExport DDS_ReturnCode_t
1312  DDS_Subscriber* self,
1313  const struct DDS_SubscriberQos *qos);
1314 
1315 /* ----------------------------------------------------------------- */
1316 /*ce \dref_Subscriber_get_qos
1317  */
1318 DDSCDllExport DDS_ReturnCode_t
1320  DDS_Subscriber *self,
1321  struct DDS_SubscriberQos *qos);
1322 #endif
1323 
1324 /* ----------------------------------------------------------------- */
1325 
1326 #ifndef RTI_CERT
1327 /*ce \dref_Subscriber_set_listener
1328  */
1329 DDSCDllExport DDS_ReturnCode_t
1331  DDS_Subscriber * self,
1332  const struct DDS_SubscriberListener *l,
1333  DDS_StatusMask mask);
1334 #endif
1335 
1336 #ifndef RTI_CERT
1337 /*ce \dref_Subscriber_get_listener
1338  */
1339 DDSCDllExport struct DDS_SubscriberListener
1341 #endif
1342 
1343 /* ================================================================= */
1344 /* Data Reader */
1345 /* ================================================================= */
1346 #define DDS_DataReader_as_entity(dataReaderPtr) \
1347  ((DDS_Entity*) dataReaderPtr)
1348 
1349 /* ----------------------------------------------------------------- */
1350 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1351 /*ce \dref_DataReader_as_entity
1352  */
1353 DDS_Entity *
1355 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1356 
1357 /* ----------------------------------------------------------------- */
1358 /*ce \dref_DataReader_enable
1359  */
1360 DDSCDllExport DDS_ReturnCode_t
1362 
1363 /* ----------------------------------------------------------------- */
1364 #if INCLUDE_API_LOOKUP
1365 /*ce \dref_DataReader_get_matched_publications
1366  */
1367 DDSCDllExport DDS_ReturnCode_t
1369  DDS_DataReader *self,
1370  struct DDS_InstanceHandleSeq *publication_handles);
1371 #endif /* INCLUDE_API_LOOKUP */
1372 
1374 /* ----------------------------------------------------------------- */
1375 #if INCLUDE_API_LOOKUP
1376 /*ce \dref_DataReader_get_matched_publication_data
1377  */
1378 DDSCDllExport DDS_ReturnCode_t
1380  DDS_DataReader *self,
1381  struct DDS_PublicationBuiltinTopicData *publication_data,
1382  const DDS_InstanceHandle_t *publication_handle);
1383 #endif /* INCLUDE_API_LOOKUP */
1384 
1385 /* ----------------------------------------------------------------- */
1386 /*ce \dref_DataReader_get_topicdescription
1387  */
1388 DDSCDllExport DDS_TopicDescription*
1390 
1391 /* ----------------------------------------------------------------- */
1392 /*ce \dref_DataReader_get_subscriber
1393  */
1394 DDSCDllExport DDS_Subscriber*
1396 
1397 
1398 /* ----------------------------------------------------------------- */
1399 /*ce \dref_DataReader_get_sample_rejected_status
1400  */
1401 DDSCDllExport DDS_ReturnCode_t
1403  DDS_DataReader *self,
1404  struct DDS_SampleRejectedStatus *status);
1405 
1406 /* ----------------------------------------------------------------- */
1407 /*ce \dref_DataReader_get_liveliness_changed_status
1408  */
1409 DDSCDllExport DDS_ReturnCode_t
1411  DDS_DataReader *self,
1412  struct DDS_LivelinessChangedStatus *status);
1413 
1414 /* ----------------------------------------------------------------- */
1415 /*ce \dref_DataReader_get_requested_deadline_missed_status
1416  */
1417 DDSCDllExport DDS_ReturnCode_t
1419  DDS_DataReader *self,
1420  struct DDS_RequestedDeadlineMissedStatus *status);
1421 
1422 /* ----------------------------------------------------------------- */
1423 /*ce \dref_DataReader_get_requested_incompatible_qos_status
1424  */
1425 DDSCDllExport DDS_ReturnCode_t
1427  DDS_DataReader *self,
1428  struct DDS_RequestedIncompatibleQosStatus *status);
1429 
1430 /* ----------------------------------------------------------------- */
1431 /*ce \dref_DataReader_get_subscription_matched_status
1432  */
1433 DDSCDllExport DDS_ReturnCode_t
1435  DDS_DataReader *self,
1436  struct DDS_SubscriptionMatchedStatus *status);
1437 
1438 /* ----------------------------------------------------------------- */
1439 /*ce \dref_DataReader_get_sample_lost_status
1440  */
1441 DDSCDllExport DDS_ReturnCode_t
1443  DDS_DataReader *self,
1444  struct DDS_SampleLostStatus *status);
1445 
1446 /* ----------------------------------------------------------------- */
1447 /*ce \dref_DataReader_get_instance_replaced_status
1448  */
1449 DDSCDllExport DDS_ReturnCode_t
1451  DDS_DataReader *self,
1452  struct DDS_DataReaderInstanceReplacedStatus *status);
1453 
1454 /*ci
1455  * \brief Get a pointer to the DataReader's Qos policy
1456  *
1457  * \details
1458  * NOTE: It is up to the caller to ensure the datareader is not deleted while
1459  * the Qos is being accessed.
1460  *
1461  * \return Pointer to DDS_DataReaderQos*
1462  */
1463 DDSCDllExport struct DDS_DataReaderQos*
1464 DDS_DataReader_get_qos_ref(DDS_DataReader *self);
1465 
1466 /* ----------------------------------------------------------------- */
1467 #if INCLUDE_API_QOS
1468 /*ce \dref_DataReader_set_qos
1469  */
1470 DDSCDllExport DDS_ReturnCode_t
1472  DDS_DataReader* self,
1473  const struct DDS_DataReaderQos *qos);
1474 
1475 /* ----------------------------------------------------------------- */
1476 /*ce \dref_DataReader_get_qos
1477  */
1478 DDSCDllExport DDS_ReturnCode_t
1480  struct DDS_DataReaderQos *qos);
1481 #endif
1482 
1483 /* ----------------------------------------------------------------- */
1484 #ifndef RTI_CERT
1485 /*ce \dref_DataReader_set_listener
1486  */
1487 DDSCDllExport DDS_ReturnCode_t
1489  DDS_DataReader * self,
1490  const struct DDS_DataReaderListener *l,
1491  DDS_StatusMask mask);
1492 #endif
1493 
1494 /* ----------------------------------------------------------------- */
1495 #ifndef RTI_CERT
1496 /*ce \dref_DataReader_get_listener
1497  */
1498 DDSCDllExport struct DDS_DataReaderListener
1500 #endif
1501 /* ----------------------------------------------------------------- */
1502 
1503 /*ce \dref_DataReader_get_instance_replaced_status
1504  */
1507  struct DDS_DataReaderInstanceReplacedStatus *status);
1508 
1509 /* ----------------------------------------------------------------- */
1510 
1511 #ifdef __cplusplus
1512 }
1513 #endif
1514 
1515 #include "dds_c/dds_c_rh_plugin.h"
1516 
1517 #ifdef __cplusplus
1518 extern "C"
1519 {
1520 #endif
1521 
1522 /* REDA_SEQUENCE_API is always assumed to be FULL for DDS_UntypedSampleSeq */
1523 #define DDS_UntypedSampleSeq REDA_Sequence
1524 #define DDS_UntypedSampleSeq_initialize REDA_Sequence_initialize
1525 #ifndef RTI_CERT
1526 #define DDS_UntypedSampleSeq_finalize REDA_Sequence_finalize
1527 #endif /* !RTI_CERT */
1528 #define DDS_UntypedSampleSeq_get_maximum REDA_Sequence_get_maximum
1529 #define DDS_UntypedSampleSeq_set_maximum REDA_Sequence_set_maximum
1530 #define DDS_UntypedSampleSeq_get_length REDA_Sequence_get_length
1531 #define DDS_UntypedSampleSeq_set_length REDA_Sequence_set_length
1532 #define DDS_UntypedSampleSeq_get_reference REDA_Sequence_get_reference
1533 #define DDS_UntypedSampleSeq_copy REDA_Sequence_copy
1534 #define DDS_UntypedSampleSeq_is_equal REDA_Sequence_is_equal
1535 #define DDS_UntypedSampleSeq_loan_contiguous REDA_Sequence_loan_contiguous
1536 #define DDS_UntypedSampleSeq_loan_discontiguous REDA_Sequence_loan_discontiguous
1537 #define DDS_UntypedSampleSeq_unloan REDA_Sequence_unloan
1538 #define DDS_UntypedSampleSeq_has_ownership REDA_Sequence_has_ownership
1539 #define DDS_UntypedSampleSeq_get_contiguous_buffer REDA_Sequence_get_buffer
1540 #define DDS_UntypedSampleSeq_set_contiguous_buffer REDA_Sequence_set_buffer
1541 #define DDS_UntypedSampleSeq_has_discontiguous_buffer REDA_Sequence_has_discontiguous_buffer
1542 #define DDS_UntypedSampleSeq_get_token REDA_Sequence_get_token
1543 #define DDS_UntypedSampleSeq_set_token REDA_Sequence_set_token
1544 
1545 /********************* (Untyped) DataReader API ****************************/
1546 /*ce \dref_DataReader_read
1547  */
1548 DDSCDllExport DDS_ReturnCode_t
1550  DDS_DataReader *self,
1551  struct DDS_UntypedSampleSeq *received_data,
1552  struct DDS_SampleInfoSeq *info_seq,
1553  DDS_Long max_samples,
1554  DDS_SampleStateMask sample_states,
1555  DDS_ViewStateMask view_states,
1556  DDS_InstanceStateMask instance_states);
1557 
1558 /*ce \dref_DataReader_take
1559  */
1560 DDSCDllExport DDS_ReturnCode_t
1562  DDS_DataReader *self,
1563  struct DDS_UntypedSampleSeq *received_data,
1564  struct DDS_SampleInfoSeq *info_seq,
1565  DDS_Long max_samples,
1566  DDS_SampleStateMask sample_states,
1567  DDS_ViewStateMask view_states,
1568  DDS_InstanceStateMask instance_states);
1569 
1570 /*ce \dref_DataReader_read_next_sample
1571  */
1572 DDSCDllExport DDS_ReturnCode_t
1574  DDS_DataReader *self,
1575  void *received_data,
1576  struct DDS_SampleInfo *sample_info);
1577 
1578 /*ce \dref_DataReader_take_next_sample
1579  */
1580 DDSCDllExport DDS_ReturnCode_t
1582  DDS_DataReader *self,
1583  void *received_data,
1584  struct DDS_SampleInfo *sample_info);
1585 
1586 /*ce \dref_DataReader_read_instance
1587  */
1588 DDSCDllExport DDS_ReturnCode_t
1590  DDS_DataReader *self,
1591  struct DDS_UntypedSampleSeq *received_data,
1592  struct DDS_SampleInfoSeq *info_seq,
1593  DDS_Long max_samples,
1594  const DDS_InstanceHandle_t *a_handle,
1595  DDS_SampleStateMask sample_states,
1596  DDS_ViewStateMask view_states,
1597  DDS_InstanceStateMask instance_states);
1598 
1599 /*ce \dref_DataReader_take_instance
1600  */
1601 DDSCDllExport DDS_ReturnCode_t
1603  DDS_DataReader *self,
1604  struct DDS_UntypedSampleSeq *received_data,
1605  struct DDS_SampleInfoSeq *info_seq,
1606  DDS_Long max_samples,
1607  const DDS_InstanceHandle_t *a_handle,
1608  DDS_SampleStateMask sample_states,
1609  DDS_ViewStateMask view_states,
1610  DDS_InstanceStateMask instance_states);
1611 
1612 
1613 /*ce \dref_DataReader_return_loan
1614  */
1615 DDSCDllExport DDS_ReturnCode_t
1617  DDS_DataReader *self,
1618  struct DDS_UntypedSampleSeq *received_data,
1619  struct DDS_SampleInfoSeq *info_seq);
1620 
1621 /*ce \dref_DataReader_lookup_instance
1622  */
1623 DDSCDllExport DDS_InstanceHandle_t
1625  const void *key_holder);
1626 
1627 /*ci
1628  * \brief Inform a data-reader that liveliness has been lost on a remote writer
1629  *
1630  * \details
1631  * Inform a data-reader that liveliness has been lost on a remote writer.
1632  * This causes the remote writer to be deleted from the data-reader's history
1633  * cache if it is known to the data-reader and exists in the history cache.
1634  *
1635  * \param[in] self The data-reader the liveliness is lost for
1636  * \param[in] publication_handle The publication handle for the remote writer
1637  * that has lost liveliness.
1638  */
1639 DDSCDllExport void
1640 DDS_DataReader_liveliness_lost(DDS_DataReader *self,
1641  DDS_InstanceHandle_t *publication_handle);
1642 
1643 /*ci
1644  * \brief Add an anonymous route to a DDS DataReader
1645  *
1646  * \details
1647  * This function adds an anonymous route to a DataWriter. An anonymous
1648  * route is a route with no state information and is typically used
1649  * by a DDS participant reader to listen to discovery traffic from other
1650  * participants in a domain.
1651  *
1652  * \param[in] self The datareader to add the route to
1653  * \param[in] src_writer The peer writer to listen to
1654  * \param[in] from_address The address to listen for traffic on
1655  *
1656  * \return DDS_BOOLEAN_TRUE on success, DDS_BOOLEAN_FALSE on failure
1657  */
1658 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1659 DDS_DataReader_add_anonymous_route(DDS_DataReader *self,
1660  struct NETIO_Address *src_writer,
1661  struct NETIO_Address *from_address);
1662 
1663 #ifndef RTI_CERT
1664 /*ci
1665  * \brief Remove an anonymous route from a DDS DataReader
1666  *
1667  * \details
1668  * This function removes an anonymous route from a DataReader. An anonymous
1669  * route is a route with no state information and is typically used
1670  * by a DDS participant to listen to discovery traffic from other
1671  * participants in a domain. This function stops listening on traffic
1672  * from a particular address.
1673  *
1674  * \param[in] self The datareader to remove the route from
1675  * \param[in] src_writer The peer writer to stop listening to
1676  * \param[in] from_address The address to stop listening on
1677  *
1678  * \return DDS_BOOLEAN_TRUE on success, DDS_BOOLEAN_FALSE on failure
1679  */
1680 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1681 DDS_DataReader_delete_anonymous_route(DDS_DataReader *self,
1682  struct NETIO_Address *src_writer,
1683  struct NETIO_Address *from_address);
1684 #endif /* !RTI_CERT */
1685 
1686 struct DDS_DataWriterQos;
1687 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1688 DDS_DataReader_add_route(DDS_DataReader *self,
1689  const DDS_BuiltinTopicKey_t *key,
1690  const struct DDS_DataWriterQos *const qos,
1691  const struct DDS_LocatorSeq *uc_locator,
1692  const struct DDS_LocatorSeq *mc_locator,
1693  RTI_BOOL *route_existed);
1694 
1695 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean
1696 DDS_DataReader_delete_route(DDS_DataReader *self,
1697  const DDS_BuiltinTopicKey_t *key,
1698  const struct DDS_LocatorSeq *uc_locator,
1699  const struct DDS_LocatorSeq *mc_locator,
1700  RTI_BOOL *route_existed);
1701 
1702 /* ----------------------------------------------------------------- */
1703 
1704 
1705 #ifdef __cplusplus
1706 } /* extern "C" */
1707 #endif
1708 
1709 
1710 #endif /* dds_c_subscription_h */

RTI Connext DDS Micro Version 2.4.9 Copyright © Thu Dec 15 2016 Real-Time Innovations, Inc