RTI Connext Micro  Version 2.4.1.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
dds_c_infrastructure.h
Go to the documentation of this file.
1 /*
2  * FILE: dds_c_infrastructure.h - DDS infrastructure module definitions
3  *
4  * (c) Copyright, Real-Time Innovations, 2012-2014.
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  * 08oct2014,tk MICRO-919 Added SampleLostReason to SampleLost status
16  * MICRO-918 Removed TimeBasedFilter qos policy (unsupported)
17  * 20sep2014,as Make support functions for QosPolicy types private; remove macros DDSC_CPP_VALUE_TYPE_SUPPORT_FUNCTIONS
18  * and DDSC_CPP_SUPPORT_TYPE_SUPPORT_FUNCTIONS; update DDSC_CPP_VALUE_TYPE_SUPPORT_METHODS and
19  * DDSC_CPP_STATUS_TYPE_SUPPORT_METHODS to only define method signatures (no inline implementation)
20  * 04aug2014,tk MICRO-846/PR#10203 - Limit exposure of PropertySeq API
21  * MICRO-848/PR#10206 - Limit exposure of PropertySeq API
22  * 29jul2014,tk MICRO-864/PR#10245 Fixed C++ DDS_DataReaderResourceLimitsQosPolicy
23  * 19jul2013,as Added support for C++
24  * 06feb2013,eh MICRO-262: add max_remote_readers
25  * 29jun2012,tk Written
26  */
27 /*ce
28  * \file
29  * \brief DDS Domain Module definitions
30  */
31 /*e @addtogroup DDSInfrastructureModule Infrastructure Module
32  @ingroup DDSCModule
33 
34 
35  @brief Defines the \dds infrastructure package
36 */
37 #ifndef dds_c_infrastructure_h
38 #define dds_c_infrastructure_h
39 
40 #ifndef dds_c_dll_h
41 #include "dds_c/dds_c_dll.h"
42 #endif
43 #ifndef osapi_thread_h
44 #include "osapi/osapi_thread.h"
45 #endif
46 #ifndef netio_rtps_h
47 #include "netio/netio_rtps.h"
48 #endif
49 #ifndef rtps_rtps_h
50 #include "rtps/rtps_rtps.h"
51 #endif
52 #ifndef dds_c_common_h
53 #include "dds_c/dds_c_common.h"
54 #endif
55 #ifndef dds_c_string_h
56 #include "dds_c/dds_c_string.h"
57 #endif
58 #ifndef dds_c_sequence_h
59 #include "dds_c/dds_c_sequence.h"
60 #endif
61 
62 #ifdef __cplusplus
63 extern "C"
64 {
65 #endif
66 
67 #ifndef NULL
68 #define NULL 0
69 #endif
70 
71 /* ================================================================= */
72 /* Micro DDS */
73 /* ================================================================= */
74 #define RTI_MICRODDS
75 #define RTI_MICRODDS_MAJOR 2
76 #define RTI_MICRODDS_MINOR 0
77 
78 /* ================================================================= */
79 /* CPP VALUE-TYPE SUPPORT */
80 /* ================================================================= */
81 
82 
83 #ifdef RTI_CPP
84 #ifndef RTI_CERT
85 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
86  public:\
87  T();\
88  ~T();\
89  DDS_ReturnCode_t copy(const T& from);\
90  T(const T& from);\
91  T& operator=(const T& from);\
92  bool operator==(const T& other);\
93  bool operator!=(const T& other);
94 #else /* ifdef RTI_CERT */
95 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
96  public:\
97  T();\
98  ~T();\
99  DDS_ReturnCode_t copy(const T& from);\
100  private: \
101  T(const T& from);\
102  T& operator=(const T& from);\
103  bool operator==(const T& other);\
104  bool operator!=(const T& other);
105 #endif /* ifdef RTI_CERT */
106 
107 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T) \
108  public:\
109  T();\
110  ~T();\
111  private: \
112  T(const T& from);\
113  T& operator=(const T& from);\
114  bool operator==(const T& other);\
115  bool operator!=(const T& other);
116 
117 #else /* ifdef RTI_CPP */
118 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T)
119 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T)
120 #endif /* ifdef RTI_CPP */
121 
122 /* ================================================================= */
123 /* Time Support */
124 /* ================================================================= */
125 
126 /*e
127  * \dref_TimeSupportGroupDocs
128  */
129 
130 /*e
131  * \dref_Time_t
132  */
134 {
135  /*e
136  * \dref_TimeStamp_sec
137  */
139 
140  /*e
141  * \dref_TimeStamp_nanosec
142  */
144 };
145 
146 #define DDS_Time_t_equals(l, r) \
147  ((l).sec == (r).sec && (l).nanosec == (r).nanosec)
148 
149 #ifdef DOXYGEN_DOCUMENTATION_ONLY
150 /*e
151  * \dref_Time_t_equals
152  */
154  const struct DDS_Time_t *l, const struct DDS_Time_t *r);
155 
156 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
157 
158 #define DDS_Time_t_greater_than(l, r) \
159  (((l).sec > (r).sec) || \
160  (((l).sec == (r).sec) && \
161  ((l).nanosec > (r).nanosec)))
162 
163 #ifdef DOXYGEN_DOCUMENTATION_ONLY
164 /*e
165  * \dref_Time_t_greater_than
166  */
168  const struct DDS_Time_t *l, const struct DDS_Time_t *r);
169 
170 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
171 
172 #define DDS_Time_t_less_than(l, r) \
173  (((l).sec < (r).sec) || \
174  (((l).sec == (r).sec) && \
175  ((l).nanosec < (r).nanosec)))
176 
177 #ifdef DOXYGEN_DOCUMENTATION_ONLY
178 /*e
179  * \dref_Time_t_less_than
180  */
182  const struct DDS_Time_t *l, const struct DDS_Time_t *r);
183 
184 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
185 
186 /*e
187  * \dref_Time_t_ZERO
188  */
189 #define DDS_TIME_ZERO { 0L, 0UL }
190 
191 #define DDS_Time_is_zero(timePtr) \
192  ((timePtr)->sec == 0L || (timePtr)->nanosec == 0UL)
193 
194 #ifdef DOXYGEN_DOCUMENTATION_ONLY
195 
196 /*e
197  * \dref_Time_t_is_zero
198  */
199  DDS_Boolean DDS_Time_is_zero(const struct DDS_Time_t *time);
200 
201 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
202 
203 /*e
204  * \dref_Time_t_INVALID_SEC
205  */
206 extern DDSCDllVariable const DDS_Long DDS_TIME_INVALID_SEC;
207 
208 /*i deprecated */
209 #define DDS_TIMESTAMP_INVALID_SEC DDS_TIME_INVALID_SEC
210 
211 /*e
212  * \dref_Time_t_INVALID_NSEC
213  */
214 extern DDSCDllVariable const DDS_UnsignedLong DDS_TIME_INVALID_NSEC;
215 
216 /*i deprecated */
217 #define DDS_TIMESTAMP_INVALID_NSEC DDS_TIME_INVALID_NSEC
218 
219 /*e
220  * \dref_Time_t_INVALID
221  */
222 extern DDSCDllVariable const struct DDS_Time_t DDS_TIME_INVALID;
223 
224 #define DDS_Time_is_invalid(timePtr) \
225  ((timePtr)->sec < 0)
226 
227 #ifdef DOXYGEN_DOCUMENTATION_ONLY
228 /*e
229  * \dref_Time_t_is_invalid
230  */
231  DDS_Boolean DDS_Time_is_invalid(const struct DDS_Time_t *time);
232 #endif
233 
234 /* ================================================================= */
235 /* Duration */
236 /* ================================================================= */
237 /*e \dref_Duration_t
238  */
240 {
241  /*e \dref_TimeStamp_sec
242  */
244 
245  /*e \dref_TimeStamp_nanosec
246  */
248 };
249 
250 /*e \dref_Duration_t_INFINITE_SEC
251  */
252 extern DDSCDllVariable const DDS_Long DDS_DURATION_INFINITE_SEC;
253 
254 /*i deprecated */
255 #define DDS_DURATION_INFINITY_SEC DDS_DURATION_INFINITE_SEC
256 
257 /*e \dref_Duration_t_INFINITE_NSEC
258  */
259 extern DDSCDllVariable const DDS_UnsignedLong DDS_DURATION_INFINITE_NSEC;
260 
261 /*i deprecated */
262 #define DDS_DURATION_INFINITY_NSEC DDS_DURATION_INFINITE_NSEC
263 
264 /*e \dref_Duration_t_INFINITE
265  */
266 extern DDSCDllVariable const struct DDS_Duration_t DDS_DURATION_INFINITE;
267 
268 #define DDS_Duration_is_infinite(durationPtr) \
269  ((durationPtr)->sec == DDS_DURATION_INFINITE_SEC && \
270  (durationPtr)->nanosec == DDS_DURATION_INFINITE_NSEC)
271 
272 #ifdef DOXYGEN_DOCUMENTATION_ONLY
273 /*e \dref_Duration_t_is_infinite
274  */
275  DDS_Boolean DDS_Duration_is_infinite(const struct DDS_Duration_t *duration);
276 #endif
277 
278 /*ce \dref_Duration_t_compare
279  */
280 DDSCDllExport int
281 DDS_Duration_compare(const struct DDS_Duration_t *left,
282  const struct DDS_Duration_t *right);
283 
284 /*ce \dref_Duration_t_to_ntp_time
285  */
286 DDSCDllExport void
287 DDS_Duration_to_ntp_time(const struct DDS_Duration_t *self,
288  struct OSAPI_NtpTime *dst);
289 
290 /*ce \dref_Duration_t_from_ntp_time
291  */
292 DDSCDllExport void
294  const struct OSAPI_NtpTime *src);
295 
296 #define DDS_Duration_copy(out, in) \
297  ((out.sec = in.sec) && \
298  (out.nanosec = in.nanosec))
299 #ifdef DOXYGEN_DOCUMENTATION_ONLY
300 /*e
301  * \dref_Duration_t_copy
302  */
304  const struct DDS_Duration_t *out,
305  const struct DDS_Duration_t *in);
306 #endif
307 
308 
309 #define DDS_Duration_equal(me, other) \
310  ((me)->sec == (other)->sec && \
311  (me)->nanosec == (other)->nanosec)
312 #ifdef DOXYGEN_DOCUMENTATION_ONLY
313 /*e
314  * \dref_Duration_t_equal
315  */
317  const struct DDS_Duration_t *self,
318  const struct DDS_Duration_t *other);
319 #endif
320 
321 #define DDS_Duration_set(me, __sec,__nanosec) \
322  (me)->sec = __sec;\
323  (me)->nanosec = __nanosec
324 #define DDS_Duration_get(me, __sec,__nanosec) \
325  __sec = (me)->sec;\
326  __nanosec = (me)->nanosec
327 
328 /*e \dref_Duration_t_ZERO_SEC
329  */
330 extern DDSCDllVariable const DDS_Long DDS_DURATION_ZERO_SEC;
331 
332 /*e \dref_Duration_t_ZERO_NSEC
333  */
334 extern DDSCDllVariable const DDS_UnsignedLong DDS_DURATION_ZERO_NSEC;
335 
336 /*e \dref_Duration_t_ZERO
337  */
338 extern DDSCDllVariable const struct DDS_Duration_t DDS_DURATION_ZERO;
339 
340 #define DDS_Duration_is_zero(durationPtr) \
341  ((durationPtr)->sec == DDS_DURATION_ZERO_SEC && \
342  (durationPtr)->nanosec == DDS_DURATION_ZERO_NSEC)
343 #ifdef DOXYGEN_DOCUMENTATION_ONLY
344 /*e \dref_Duration_t_is_zero
345  */
346  DDS_Boolean DDS_Duration_is_zero(const struct DDS_Duration_t *duration);
347 #endif
348 
349 /* ================================================================= */
350 /* Instance Handle */
351 /* ================================================================= */
352 
353 /*e \dref_InstanceHandle_t
354  */
355 typedef DDS_HANDLE_TYPE_NATIVE DDS_InstanceHandle_t;
356 
357 DDS_SEQUENCE(DDS_InstanceHandleSeq, DDS_InstanceHandle_t)
358 
359 #ifdef DOXYGEN_DOCUMENTATION_ONLY
360 /*i \dref_InstanceHandleSeq
361  */
362 struct DDS_InstanceHandleSeq {};
363 #endif
364 
365 /*e \dref_InstanceHandle_t_NIL
366 */
367 extern DDSCDllVariable const DDS_InstanceHandle_t DDS_HANDLE_NIL;
368 
369 /*e \dref_InstanceHandle_t_equals
370  */
371 DDSCDllExport DDS_Boolean
372 DDS_InstanceHandle_equals(const DDS_InstanceHandle_t *self,
373  const DDS_InstanceHandle_t *other);
374 
375 #define DDS_InstanceHandle_is_nil(handlePtr) \
376  DDS_InstanceHandle_equals(handlePtr, &DDS_HANDLE_NIL)
377 
378 #ifdef DOXYGEN_DOCUMENTATION_ONLY
379 /*e \dref_InstanceHandle_t_is_nil
380  */
381  DDS_Boolean DDS_InstanceHandle_is_nil(const DDS_InstanceHandle_t * self);
382 #endif
383 
384 /*i \dref_InstanceHandle_t_from_rtps
385  */
386 DDSCDllExport void
387 DDS_InstanceHandle_from_rtps(DDS_InstanceHandle_t * self,
388  const struct RTPS_Guid *other);
389 
390 /*i \dref_InstanceHandle_t_to_rtps
391  */
392 DDSCDllExport void
393 DDS_InstanceHandle_to_rtps(struct RTPS_Guid *other,
394  const DDS_InstanceHandle_t * self);
395 
396 /*i \dref_InstanceHandle_t_from_netio_address
397  */
398 DDSCDllExport void
399 DDS_InstanceHandle_from_netio_address(DDS_InstanceHandle_t * self,
400  const struct NETIO_Address *other);
401 
402 /*e \dref_InstanceHandle_t_equals
403  */
404 DDSCDllExport DDS_Boolean
405 DDS_InstanceHandle_equals(const DDS_InstanceHandle_t * self,
406  const DDS_InstanceHandle_t * other);
407 
408 /*i \dref_InstanceHandle_t_compare
409  */
410 DDSCDllExport DDS_Long
411 DDS_InstanceHandle_compare(const DDS_InstanceHandle_t * self,
412  const DDS_InstanceHandle_t * other);
413 
414 /* ================================================================= */
415 /* GUID */
416 /* ================================================================= */
417 
418 /*e
419  * \dref_GUIDSupportGroupDocs
420  */
421 
422 /*e \dref_GUID_t
423  */
425 {
426  /*e \dref_GUID_t_value
427  */
429 };
430 
431 /*i \dref_GUID_t_INITIALIZER
432  */
433 #define DDS_GUID_INITIALIZER {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
434 
435 /*i \dref_GUID_t_AUTO
436 */
437 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_AUTO;
438 
439 /*e \dref_GUID_t_UNKNOWN
440 */
441 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_UNKNOWN;
442 
443 /*i \dref_GUID_t_PREFIX_UNKNOWN
444 */
445 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_PREFIX_UNKNOWN;
446 
447 /*i \dref_GUID_t_PREFIX_UNKNOWN
448  */
449 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_PREFIX_AUTO;
450 
451 /*e \dref_GUID_t_equals
452  */
453 DDSCDllExport DDS_Boolean
454 DDS_GUID_equals(const struct DDS_GUID_t *self,
455  const struct DDS_GUID_t *other);
456 
457 /*e \dref_GUID_t_copy
458  */
459 DDSCDllExport void
460 DDS_GUID_copy(struct DDS_GUID_t *self,
461  const struct DDS_GUID_t *other);
462 
463 /*i \dref_GUID_t_to_rtps
464  @brief Convert from DDS GUID to RTPS GUID
465  */
466 DDSCDllExport void
467 DDS_GUID_to_rtps(struct RTPS_Guid *other,
468  const struct DDS_GUID_t *self);
469 
470 /*i \dref_GUID_t_from_rtps
471  @brief Convert from RTPS GUID to DDS GUID
472  */
473 DDSCDllExport void
474 DDS_GUID_from_rtps(struct DDS_GUID_t *self,
475  const struct RTPS_Guid *other);
476 
477 /*i \dref_GUID_t_compare
478  @brief Compare DDS_GUIDs
479  */
480 DDSCDllExport DDS_Long
481 DDS_GUID_compare(const struct DDS_GUID_t *self,
482  const struct DDS_GUID_t *other);
483 
484 /* ================================================================= */
485 /* Sequence Number Support */
486 /* ================================================================= */
487 
488 /*e
489  * \dref_SequenceNumberSupportGroupDocs
490  */
491 
492 /*e \dref_SequenceNumber_t
493  */
495 {
496  /*e \dref_SequenceNumber_t_high
497  */
499 
500  /*e \dref_SequenceNumber_t_low
501  */
503 };
504 
505 /*i \dref_SequenceNumber_NUMBER_UNKNOWN
506  */
507 #define DDS_SEQUENCE_NUMBER_UNKNOWN REDA_SEQUENCE_NUMBER_UNKNOWN
508 
509 /*i \dref_SequenceNumber_NUMBER_ZERO
510  */
511 #define DDS_SEQUENCE_NUMBER_ZERO REDA_SEQUENCE_NUMBER_ZERO
512 
513 /*i \dref_SequenceNumber_NUMBER_MAX
514  */
515 #define DDS_SEQUENCE_NUMBER_MAX REDA_SEQUENCE_NUMBER_MAX
516 
517 #define DDS_SequenceNumber_compare(sn1,sn2) \
518  ((((sn1)->high) > ((sn2)->high)) ? 1 : \
519  ((((sn1)->high) < ((sn2)->high)) ? -1 : \
520  ((((sn1)->low) > ((sn2)->low)) ? 1 : \
521  ((((sn1)->low) < ((sn2)->low)) ? -1 : 0))))
522 
523 #ifdef DOXYGEN_DOCUMENTATION_ONLY
524 /*e \dref_SequenceNumber_t_compare
525  */
527  const struct DDS_SequenceNumber_t *sn2);
528 #endif
529 
530 /* ================================================================= */
531 /* Return Types */
532 /* ================================================================= */
533 /*e \dref_ReturnCodeGroupDocs
534  */
535 
536 /* ----------------------------------------------------------------- */
537 /*e \dref_ReturnCode_t
538 */
539 typedef enum
540 {
541  /*e \dref_ReturnCode_t_RETCODE_OK
542  */
544 
545  /*e \dref_ReturnCode_t_RETCODE_ERROR
546  */
548 
549  /*e \dref_ReturnCode_t_RETCODE_UNSUPPORTED
550  */
552 
553  /*e \dref_ReturnCode_t_RETCODE_BAD_PARAMETER
554  */
556 
557  /*e \dref_ReturnCode_t_RETCODE_PRECONDITION_NOT_MET
558  */
560 
561  /*e \dref_ReturnCode_t_RETCODE_OUT_OF_RESOURCES
562  */
564 
565  /*e \dref_ReturnCode_t_RETCODE_NOT_ENABLED
566  */
568 
569  /*e \dref_ReturnCode_t_RETCODE_IMMUTABLE_POLICY
570  */
572 
573  /*e \dref_ReturnCode_t_RETCODE_INCONSISTENT_POLICY
574  */
576 
577  /*e \dref_ReturnCode_t_RETCODE_ALREADY_DELETED
578  */
580 
581  /*e \dref_ReturnCode_t_RETCODE_TIMEOUT
582  */
584 
585  /*e \dref_ReturnCode_t_RETCODE_NO_DATA
586  */
588 
589  /*e \dref_ReturnCode_t_RETCODE_ILLEGAL_OPERATION
590  */
593 
594 
595 /* ================================================================= */
596 /* VARIABLE LENGTH TYPES SUPPORT */
597 /* ================================================================= */
598 /*i @defgroup DDSVarLenType Full Variable Length Type Support
599  @ingroup DDSCommonModule
600  */
601 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(T) \
602  struct T; \
603  DDSCDllExport DDS_Boolean T ## _initialize(struct T* self); \
604  DDSCDllExport DDS_Boolean T ## _finalize(struct T* self); \
605  DDSCDllExport DDS_Boolean T ## _copy(struct T* self, const struct T* from);\
606  MUST_CHECK_RETURN DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
607 
608 /*i @defgroup DDSVarLenType Basic Variable Length Type Support
609  @ingroup DDSCommonModule
610  */
611 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(T) \
612  struct T; \
613  DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
614 
615 /* DDSCDllExport DDS_ReturnCode_t T ## _copy(struct T* self, const struct T* from); */
616 
617 /* ================================================================= */
618 /* Status Types */
619 /* ================================================================= */
620 
621 /*e \dref_StatusKindGroupDocs
622  */
623 
624 /*e \dref_StatusMask
625  */
627 
628 /*e \dref_STATUS_MASK_NONE
629  */
630 #define DDS_STATUS_MASK_NONE ((DDS_StatusMask) 0)
631 
632 /*e \dref_STATUS_MASK_ALL
633  */
634 #define DDS_STATUS_MASK_ALL (~DDS_STATUS_MASK_NONE)
635 
636 /* ----------------------------------------------------------------- */
637 /*e \dref_StatusKind
638  */
639 typedef enum
640 {
641  /*e \dref_StatusKind_INCONSISTENT_TOPIC_STATUS
642  */
644 
645  /*e \dref_StatusKind_OFFERED_DEADLINE_MISSED_STATUS
646  */
648 
649  /*e \dref_StatusKind_REQUESTED_DEADLINE_MISSED_STATUS
650  */
652 
653  /*e \dref_StatusKind_OFFERED_INCOMPATIBLE_QOS_STATUS
654  */
656 
657  /*e \dref_StatusKind_REQUESTED_INCOMPATIBLE_QOS_STATUS
658  */
660 
661  /*e \dref_StatusKind_SAMPLE_LOST_STATUS
662  */
663  DDS_SAMPLE_LOST_STATUS = 0x0001 << 7,
664 
665  /*e \dref_StatusKind_SAMPLE_REJECTED_STATUS
666  */
668 
669  /*e \dref_StatusKind_DATA_ON_READERS_STATUS
670  */
672 
673  /*e \dref_StatusKind_DATA_AVAILABLE_STATUS
674  */
676 
677  /*e \dref_StatusKind_LIVELINESS_LOST_STATUS
678  */
680 
681  /*e \dref_StatusKind_LIVELINESS_CHANGED_STATUS
682  */
684 
685  /*e \dref_StatusKind_PUBLICATION_MATCHED_STATUS
686  */
688 
689  /*e \dref_StatusKind_SUBSCRIPTION_MATCHED_STATUS
690  */
692 
693  /* --- Begin extended statuses --- */
694  /* The "right"-most 24 bits of the StatusMask are reserved
695  * for standard statuses. The remaining 8 bits are for extended statuses.
696  */
697 
698  /*e \dref_StatusKind_INSTANCE_REPLACED_STATUS
699  */
701 
702  /*e \dref_StatusKind_RELIABLE_READER_ACTIVITY_CHANGED_STATUS
703  */
705 
707 
708 /* ================================================================= */
709 /* QoS Types */
710 /* ================================================================= */
711 /*e \dref_QosPoliciesGroupDocs
712  */
713 
714 /*e \dref_QosPolicyId_t
715  *
716  * Note that the value of these constants disagree with the values of
717  * the corresponding parameter IDs in the RTPS protocol. This conflict
718  * is unavoidable since these values are given in the DDS specification,
719  * which is not tied to RTPS.
720  */
721 typedef enum
722 {
723  /*e \dref_QosPolicyId_t_INVALID_QOS_POLICY_ID
724  */
726 
727  /*i \dref_QosPolicyId_t_USERDATA_QOS_POLICY_ID
728  */
729  DDS_USERDATA_QOS_POLICY_ID = 1,
730 
731  /*i \dref_QosPolicyId_t_DURABILITY_QOS_POLICY_ID
732  */
733  DDS_DURABILITY_QOS_POLICY_ID = 2,
734 
735  /*i \dref_QosPolicyId_t_PRESENTATION_QOS_POLICY_ID
736  */
737  DDS_PRESENTATION_QOS_POLICY_ID = 3,
738 
739  /*e \dref_QosPolicyId_t_DEADLINE_QOS_POLICY_ID
740  */
742 
743  /*i \dref_QosPolicyId_t_LATENCYBUDGET_QOS_POLICY_ID
744  */
745  DDS_LATENCYBUDGET_QOS_POLICY_ID = 5,
746 
747  /*e \dref_QosPolicyId_t_OWNERSHIP_QOS_POLICY_ID
748  */
750 
751  /*e \dref_QosPolicyId_t_OWNERSHIPSTRENGTH_QOS_POLICY_ID
752  */
754 
755  /*e \dref_QosPolicyId_t_LIVELINESS_QOS_POLICY_ID
756  */
758 
759  /*i \dref_QosPolicyId_t_TIMEBASEDFILTER_QOS_POLICY_ID
760  */
761  DDS_TIMEBASEDFILTER_QOS_POLICY_ID = 9,
762 
763  /*i \dref_QosPolicyId_t_PARTITION_QOS_POLICY_ID
764  */
765  DDS_PARTITION_QOS_POLICY_ID = 10,
766 
767  /*e \dref_QosPolicyId_t_RELIABILITY_QOS_POLICY_ID
768  */
770 
771  /*i \dref_QosPolicyId_t_DESTINATIONORDER_QOS_POLICY_ID
772  */
773  DDS_DESTINATIONORDER_QOS_POLICY_ID = 12,
774 
775  /*e \dref_QosPolicyId_t_HISTORY_QOS_POLICY_ID
776  */
778 
779  /*i \dref_QosPolicyId_t_RESOURCELIMITS_QOS_POLICY_ID
780  */
781  DDS_RESOURCELIMITS_QOS_POLICY_ID = 14,
782 
783  /*e \dref_QosPolicyId_t_ENTITYFACTORY_QOS_POLICY_ID
784  */
786 
787  /*i \dref_QosPolicyId_t_WRITERDATALIFECYCLE_QOS_POLICY_ID
788  */
789  DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID = 16,
790 
791  /*i \dref_QosPolicyId_t_READERDATALIFECYCLE_QOS_POLICY_ID
792  */
793  DDS_READERDATALIFECYCLE_QOS_POLICY_ID = 17,
794 
795  /*i \dref_QosPolicyId_t_TOPICDATA_QOS_POLICY_ID
796  */
797  DDS_TOPICDATA_QOS_POLICY_ID = 18,
798 
799  /*i \dref_QosPolicyId_t_GROUPDATA_QOS_POLICY_ID
800  */
801  DDS_GROUPDATA_QOS_POLICY_ID = 19,
802 
803  /*i \dref_QosPolicyId_t_TRANSPORTPRIORITY_QOS_POLICY_ID
804  */
805  DDS_TRANSPORTPRIORITY_QOS_POLICY_ID = 20,
806 
807  /*i \dref_QosPolicyId_t_LIFESPAN_QOS_POLICY_ID
808  */
809  DDS_LIFESPAN_QOS_POLICY_ID = 21,
810 
811  /*i \dref_QosPolicyId_t_DURABILITYSERVICE_QOS_POLICY_ID
812  */
813  DDS_DURABILITYSERVICE_QOS_POLICY_ID = 22,
814 
816 
817 /* ----------------------------------------------------------------- */
818 /*i \dref_QosPolicyCount
819  */
820 struct DDS_QosPolicyCount
821 {
822  /*e \dref_QosPolicyCount_policy_id
823  */
824  DDS_QosPolicyId_t policy_id;
825 
826  /*e \dref_QosPolicyCount_count
827  */
828  DDS_Long count;
829 };
830 
831 #define MICRO_DDS_SEQUENCE_MODULE
832 #ifdef MICRO_DDS_SEQUENCE_MODULE
833 DDS_SEQUENCE(DDS_QosPolicyCountSeq, struct DDS_QosPolicyCount)
834 
835 #ifdef DOXYGEN_DOCUMENTATION_ONLY
836 /*i \dref_QosPolicyCountSeq
837  */
838 struct DDS_QosPolicyCountSeq
839 {
840 };
841 #endif
842 #endif
843 
844 /* ================================================================= */
845 /* Entity Types */
846 /* ================================================================= */
847 
848 /*e \dref_EntityKind_t
849 */
850 typedef enum
851 {
852  /*e \dref_EntityKind_t_UNKNOWN_ENTITY_KIND
853  */
855  /*e \dref_EntityKind_t_PARTICIPANT_ENTITY_KIND
856  */
858  /*e \dref_EntityKind_t_PUBLISHER_ENTITY_KIND
859  */
861  /*e \dref_EntityKind_t_SUBSCRIBER_ENTITY_KIND
862  */
864  /*e \dref_EntityKind_t_TOPIC_ENTITY_KIND
865  */
867  /*e \dref_EntityKind_t_DATAREADER_ENTITY_KIND
868  */
870  /*e \dref_EntityKind_t_DATAWRITER_ENTITY_KIND
871  */
874 
875 /* ----------------------------------------------------------------- */
876 /* DEADLINE */
877 /* ----------------------------------------------------------------- */
878 /*e \dref_DeadlineQosGroupDocs
879  */
880 
881 /*e \dref_DEADLINE_QOS_POLICY_NAME
882  */
883 extern DDSCDllVariable const char *const DDS_DEADLINE_QOS_POLICY_NAME;
884 
885 /* ----------------------------------------------------------------- */
886 /*e \dref_DeadlineQosPolicy
887  */
889 {
890  /*e \dref_DeadlineQosPolicy_period
891  */
893 };
894 
895 #define DDS_Duration_to_ms(dur_) (((dur_).sec*1000) + ((dur_).nanosec/1000000))
896 
897 /*i \dref_DeadlineQosPolicy_DEFAULT
898  * Default is infinite
899  */
900 #define DDS_DEADLINE_QOS_POLICY_DEFAULT \
901 {{ 0x7fffffffL, 0xffffffffUL }}
902 
903 /* ----------------------------------------------------------------- */
904 /* OWNERSHIP */
905 /* ----------------------------------------------------------------- */
906 /*e \dref_OwnershipQosGroupDocs
907  */
908 
909 /*e \dref_OWNERSHIP_QOS_POLICY_NAME
910  */
911 extern DDSCDllVariable const char *const DDS_OWNERSHIP_QOS_POLICY_NAME;
912 
913 /* ----------------------------------------------------------------- */
914 /*e \dref_OwnershipQosPolicyKind
915  */
916 typedef enum
917 {
918  /*e \dref_OwnershipQosPolicyKind_SHARED_OWNERSHIP_QOS
919  */
921 
922  /*e \dref_OwnershipQosPolicyKind_EXCLUSIVE_OWNERSHIP_QOS
923  */
926 
927 /* ----------------------------------------------------------------- */
928 /*e \dref_OwnershipQosPolicy
929  */
931 {
932  /*e \dref_OwnershipQosPolicy_kind
933  */
935 };
936 
937 /*i \dref_OwnershipQosPolicy_DEFAULT
938  */
939 #define DDS_OWNERSHIP_QOS_POLICY_DEFAULT { DDS_SHARED_OWNERSHIP_QOS }
940 
941 /* ----------------------------------------------------------------- */
942 /* OWNERSHIP_STRENGTH */
943 /* ----------------------------------------------------------------- */
944 /*e \dref_OwnershipStrengthQosGroupDocs
945  */
946 
947 /*e \dref_OWNERSHIPSTRENGTH_QOS_POLICY_NAME
948  */
949 extern DDSCDllVariable const char *const DDS_OWNERSHIPSTRENGTH_QOS_POLICY_NAME;
950 
951 /* ----------------------------------------------------------------- */
952 /*e \dref_OwnershipStrengthQosPolicy
953  */
955 {
956  /*e \dref_OwnershipStrengthQosPolicy_value
957  */
959 };
960 
961 /*i \dref_OwnershipStrengthQosPolicy_DEFAULT
962  */
963 #define DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT { 0L }
964 
965 /* ----------------------------------------------------------------- */
966 /* LIVELINESS */
967 /* ----------------------------------------------------------------- */
968 /*e \dref_LivelinessQosGroupDocs
969  */
970 
971 /*e \dref_LIVELINESS_QOS_POLICY_NAME
972  */
973 extern DDSCDllVariable const char *const DDS_LIVELINESS_QOS_POLICY_NAME;
974 
975 /* ----------------------------------------------------------------- */
976 /*e \dref_LivelinessQosPolicyKind
977  */
978 typedef enum
979 {
980  /*i \dref_LivelinessQosPolicyKind_AUTOMATIC_LIVELINESS_QOS
981  */
982  DDS_AUTOMATIC_LIVELINESS_QOS,
983 
984  /*i \dref_LivelinessQosPolicyKind_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS
985  */
986  DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
987 
988  /*e \dref_LivelinessQosPolicyKind_MANUAL_BY_TOPIC_LIVELINESS_QOS
989  */
992 
993 /* ----------------------------------------------------------------- */
994 /*e \dref_LivelinessQosPolicy
995  */
997 {
998  /*e \dref_LivelinessQosPolicy_kind
999  */
1001 
1002  /*e \dref_LivelinessQosPolicy_lease_duration
1003  */
1005 };
1006 
1007 /*i \dref_LivelinessQosPolicy_DEFAULT
1008  * Default least duration is infinite
1009  */
1010 #define DDS_LIVELINESS_QOS_POLICY_DEFAULT \
1011 { DDS_MANUAL_BY_TOPIC_LIVELINESS_QOS, {0x7fffffff, 0xffffffffUL}}
1012 
1013 /* ----------------------------------------------------------------- */
1014 /* RELIABILITY */
1015 /* ----------------------------------------------------------------- */
1016 /*e \dref_ReliabilityQosGroupDocs
1017  */
1018 
1019 /*e \dref_RELIABILITY_QOS_POLICY_NAME
1020  */
1021 extern DDSCDllVariable const char *const DDS_RELIABILITY_QOS_POLICY_NAME;
1022 
1023 /* ----------------------------------------------------------------- */
1024 /*e \dref_ReliabilityQosPolicyKind
1025  */
1026 typedef enum
1027 {
1028  /*e \dref_ReliabilityQosPolicyKind_BEST_EFFORT_RELIABILITY_QOS
1029  */
1031 
1032  /*e \dref_ReliabilityQosPolicyKind_RELIABLE_RELIABILITY_QOS
1033  * NOTE: The RTPS spec defines reliability as 0x03 to comply with RTPS spec.
1034  * However, RTI Connext Core uses 0x3, as well as others.
1035  */
1038 
1039 /* ----------------------------------------------------------------- */
1040 /*e \dref_ReliabilityQosPolicy
1041  */
1043 {
1044  /*e \dref_ReliabilityQosPolicy_kind
1045  */
1047 
1048  /*e \dref_ReliabilityQosPolicy_max_blocking_time
1049  */
1051 };
1052 
1053 /*i \dref_ReliabilityQosPolicy_DEFAULT
1054  * Default reliability kind is different for Topic, DataWriter and DataReader.
1055  * Default reliability max blocking time is 100 milliseconds
1056  */
1057 #define DDS_RELIABILITY_QOS_POLICY_DEFAULT \
1058  { DDS_BEST_EFFORT_RELIABILITY_QOS, \
1059  {0L, 0UL} }
1060 
1061 
1062 /* ----------------------------------------------------------------- */
1063 /* HISTORY */
1064 /* ----------------------------------------------------------------- */
1065 /*e \dref_HistoryQosGroupDocs
1066  */
1067 
1068 /*e \dref_HISTORY_QOS_POLICY_NAME
1069  */
1070 extern DDSCDllVariable const char *const DDS_HISTORY_QOS_POLICY_NAME;
1071 
1072 /* ----------------------------------------------------------------- */
1073 /*e \dref_HistoryQosPolicyKind
1074  */
1075 typedef enum
1076 {
1077  /*e \dref_HistoryQosPolicyKind_KEEP_LAST_HISTORY_QOS
1078  */
1080 
1081  /*i \dref_HistoryQosPolicyKind_KEEP_ALL_HISTORY_QOS
1082  */
1083  DDS_KEEP_ALL_HISTORY_QOS
1085 
1086 /* ----------------------------------------------------------------- */
1087 /*e \dref_HistoryQosPolicy
1088  */
1090 {
1091  /*e \dref_HistoryQosPolicy_kind
1092  */
1094 
1095  /*e \dref_HistoryQosPolicy_depth
1096  */
1098 };
1099 
1100 /*i \dref_HistoryQosPolicy_DEFAULT
1101  */
1102 #define DDS_HISTORY_QOS_POLICY_DEFAULT { DDS_KEEP_LAST_HISTORY_QOS, \
1103  1L /* depth */ }
1104 
1105 /* ----------------------------------------------------------------- */
1106 /* DURABILITY */
1107 /* ----------------------------------------------------------------- */
1108 /*e \dref_DurabilityQosGroupDocs
1109 */
1110 
1111 /*e \dref_DURABILITY_QOS_POLICY_NAME
1112  */
1113 extern DDSCDllVariable const char *const DDS_DURABILITY_QOS_POLICY_NAME;
1114 
1115 /* ----------------------------------------------------------------- */
1116 /*e \dref_DurabilityQosPolicyKind
1117 */
1118 typedef enum
1119 {
1120  /*e \dref_DurabilityQosPolicyKind_VOLATILE_DURABILITY_QOS
1121  */
1123 
1124  /*e \dref_DurabilityQosPolicyKind_TRANSIENT_LOCAL_DURABILITY_QOS
1125  */
1127 
1128  /*i \dref_DurabilityQosPolicyKind_TRANSIENT_DURABILITY_QOS
1129  */
1130  DDS_TRANSIENT_DURABILITY_QOS,
1131 
1132  /*i \dref_DurabilityQosPolicyKind_PERSISTENT_DURABILITY_QOS
1133  */
1134  DDS_PERSISTENT_DURABILITY_QOS
1136 
1137 /* ----------------------------------------------------------------- */
1138 /*e \dref_DurabilityQosPolicy
1139  */
1141 {
1142  /*e \dref_DurabilityQosPolicy_kind
1143  */
1145 };
1146 
1147 /*i \dref_DurabilityQosPolicy_DEFAULT
1148  */
1149 #define DDS_DURABILITY_QOS_POLICY_DEFAULT \
1150 { DDS_VOLATILE_DURABILITY_QOS }
1151 
1152 /* ----------------------------------------------------------------- */
1153 /* RESOURCE_LIMITS */
1154 /* ----------------------------------------------------------------- */
1155 /*e \dref_ResourceLimitsQosGroupDocs
1156  */
1157 
1158 /*e \dref_RESOURCELIMITS_QOS_POLICY_NAME
1159  */
1160 extern DDSCDllVariable const char *const DDS_RESOURCELIMITS_QOS_POLICY_NAME;
1161 
1162 /*e \dref_LENGTH_UNLIMITED
1163  */
1164 extern DDSCDllVariable const DDS_Long DDS_LENGTH_UNLIMITED;
1165 
1166 /* ----------------------------------------------------------------- */
1167 /*e \dref_ResourceLimitsQosPolicy
1168  */
1170 {
1171  /*e \dref_ResourceLimitsQosPolicy_max_samples
1172  */
1174 
1175  /*e \dref_ResourceLimitsQosPolicy_max_instances
1176  */
1178 
1179  /*e \dref_ResourceLimitsQosPolicy_max_samples_per_instance
1180  */
1182 };
1183 
1184 /*i \dref_ResourceLimitsQosPolicy_DEFAULT
1185  */
1186 #define DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1187  1L, /* max_samples */ \
1188  1L, /* max_instances */ \
1189  1L, /* max_samples_per_instance */ \
1190 }
1191 
1192 /* ----------------------------------------------------------------- */
1193 /*e \dref_DataReaderResourceLimitsInstanceReplacementKind
1194 */
1195 typedef enum
1196 {
1197  /*e \dref_DataReaderResourceLimitsInstanceReplacementKind_NO_INSTANCE_REPLACEMENT_QOS
1198  */
1200 
1201  /*e \dref_DataReaderResourceLimitsInstanceReplacementKind_REPLACE_OLDEST_INSTANCE_REPLACEMENT_QOS
1202  */
1205 
1206 /* ----------------------------------------------------------------- */
1207 /* DATAREADER_RESOURCE_LIMITS */
1208 /* ----------------------------------------------------------------- */
1209 /*e \dref_DataReaderResourceLimitsQosGroupDocs
1210  */
1211 
1212 /*e \dref_DATAREADERRESOURCELIMITS_QOS_POLICY_NAME
1213  */
1214 extern DDSCDllVariable const char *const
1216 
1217 /* ----------------------------------------------------------------- */
1218 /*e \dref_DataReaderResourceLimitsQosPolicy
1219  */
1221 {
1222  /*e \dref_DataReaderResourceLimitsQosPolicy_max_remote_writers
1223  */
1225 
1226  /*e \dref_DataReaderResourceLimitsQosPolicy_max_remote_writers_per_instance
1227  */
1229 
1230  /*e \dref_DataReaderResourceLimitsQosPolicy_max_samples_per_remote_writer
1231  */
1233 
1234  /*e \dref_DataReaderResourceLimitsQosPolicy_max_outstanding_reads
1235  */
1237 
1238  /*e \dref_DataReaderResourceLimitsQosPolicy_instance_replacement
1239  */
1241 };
1242 
1243 /*i \dref_DataReaderResourceLimitsQosPolicy_DEFAULT
1244  */
1245 #define DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1246  1L, /* max_remote_writers */ \
1247  1L, /* max_remote_writers_per_instance */ \
1248  1L, /* max_samples_per_remote_writer */ \
1249  1L, /* max_outstanding_reads */ \
1250  DDS_NO_INSTANCE_REPLACEMENT_QOS, /* Default */ \
1251 }
1252 
1253 /* ----------------------------------------------------------------- */
1254 /* DATAWRITER_RESOURCE_LIMITS */
1255 /* ----------------------------------------------------------------- */
1256 /*e \dref_DataWriterResourceLimitsQosGroupDocs
1257  */
1258 
1259 /*e \dref_DATAWRITERRESOURCELIMITS_QOS_POLICY_NAME
1260  */
1261 extern DDSCDllVariable const char *const
1263 
1264 /* ----------------------------------------------------------------- */
1265 /*e \dref_DataWriterResourceLimitsQosPolicy
1266  */
1268 {
1269  /*e \dref_DataWriterResourceLimitsQosPolicy_max_remote_readers
1270  */
1272 };
1273 
1274 /*i \dref_DataWriterResourceLimitsQosPolicy_DEFAULT
1275  */
1276 #define DDS_DATAWRITERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1277  16L /* max_remote_readers */ \
1278 }
1279 
1280 /* ----------------------------------------------------------------- */
1281 /* ENTITY_FACTORY */
1282 /* ----------------------------------------------------------------- */
1283 /*e \dref_EntityFactoryQosGroupDocs
1284  */
1285 
1286 /*e \dref_ENTITYFACTORY_QOS_POLICY_NAME
1287  */
1288 extern DDSCDllVariable const char *const DDS_ENTITYFACTORY_QOS_POLICY_NAME;
1289 
1290 /* ----------------------------------------------------------------- */
1291 /*e \dref_EntityFactoryQosPolicy
1292  */
1294 {
1295  /*e \dref_EntityFactoryQosPolicy_autoenable_created_entities
1296  */
1298 };
1299 
1300 /*i \dref_EntityFactoryQosPolicy_DEFAULT
1301  */
1302 #define DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT { DDS_BOOLEAN_TRUE }
1303 
1304 /* ----------------------------------------------------------------- */
1305 /* EXTENDED QOS SUPPORT */
1306 /* ----------------------------------------------------------------- */
1307 
1308 /* ----------------------------------------------------------------- */
1309 /*e
1310  * \dref_ExtendedQosSupportGroupDocs
1311  */
1312 #define DDS_LENGTH_UNLIMITED (-1)
1313 
1314 /* ----------------------------------------------------------------- */
1315 
1316 /* ----------------------------------------------------------------- */
1317 /* TYPESUPPORT */
1318 /* ----------------------------------------------------------------- */
1319 /*i \dref_TypeSupportQosGroupDocs
1320 */
1321 
1322 /*i \dref_TYPESUPPORT_QOS_POLICY_NAME
1323  */
1324 extern DDSCDllVariable const char *const DDS_TYPESUPPORT_QOS_POLICY_NAME;
1325 
1326 /* ----------------------------------------------------------------- */
1327 /*i \dref_TypeSupportQosPolicy
1328  */
1329 struct DDS_TypeSupportQosPolicy
1330 {
1331  /*e \dref_TypeSupportQosPolicy_plugin_data
1332  */
1333  void *plugin_data;
1334 };
1335 
1336 /*i \dref_TypeSupportQosPolicy_DEFAULT
1337  */
1338 #define DDS_TYPESUPPORT_QOS_POLICY_DEFAULT \
1339 { NULL }
1340 
1341 /* ----------------------------------------------------------------- */
1342 /* SYSTEM_RESOURCE_LIMITS_X (eXtension QoS) */
1343 /* ----------------------------------------------------------------- */
1344 /*e \dref_SystemResourceLimitsQosGroupDocs
1345  */
1346 
1347 /*e \dref_SYSTEMRESOURCELIMITS_QOS_POLICY_NAME
1348  */
1349 extern DDSCDllVariable const char *const DDS_SYSTEMRESOURCELIMITS_QOS_POLICY_NAME;
1350 
1351 /* ----------------------------------------------------------------- */
1352 
1353 /*e \dref_SystemResourceLimitsQosPolicy
1354  */
1356 {
1357  /*e \dref_SystemResourceLimitsQosPolicy_max_participants
1358  */
1360 };
1361 
1362 /*i \dref_SystemResourceLimitsQosPolicy_DEFAULT
1363  */
1364 #define DDS_SYSTEM_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { 1L }
1365 
1366 /* ----------------------------------------------------------------- */
1367 /* WIRE_PROTOCOL_X (eXtension QoS) */
1368 /* ----------------------------------------------------------------- */
1369 /*e \dref_WireProtocolQosGroupDocs
1370  */
1371 
1372 #define DDS_RtpsWellKnownPorts NETIO_RtpsPortParam
1373 
1374 /*e \dref_RTI_BACKWARDS_COMPATIBLE_RTPS_WELL_KNOWN_PORTS
1375  */
1376 extern DDSCDllVariable struct DDS_RtpsWellKnownPorts_t
1378 
1379 /*e \dref_INTEROPERABLE_RTPS_WELL_KNOWN_PORTS
1380  */
1381 extern DDSCDllVariable struct DDS_RtpsWellKnownPorts_t
1383 
1384 /*i @ingroup DDSWireProtocolQosModule
1385  these defaults are compatible with >= 4.2d
1386  */
1387 
1388 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1389 /*e \dref_RtpsWellKnownPorts_t
1390  */
1392 {
1393  /*e \dref_RtpsWellKnownPorts_t_port_base
1394  */
1396 
1397  /*e \dref_RtpsWellKnownPorts_t_domain_id_gain
1398  */
1400 
1401  /*e \dref_RtpsWellKnownPorts_t_participant_id_gain
1402  */
1404 
1405  /*e \dref_RtpsWellKnownPorts_t_builtin_multicast_port_offset
1406  */
1408 
1409  /*e \dref_RtpsWellKnownPorts_t_builtin_unicast_port_offset
1410  */
1412 
1413  /*e \dref_RtpsWellKnownPorts_t_user_multicast_port_offset
1414  */
1416 
1417  /*e \dref_RtpsWellKnownPorts_t_user_unicast_port_offset
1418  */
1420 };
1421 
1422 #endif /* DOXYGEN_DOCUMENTATION_ONLY */
1423 
1424 #define DDS_RtpsWellKnownPorts_t DDS_RtpsWellKnownPorts
1425 
1426 /*i \dref_RtpsWellKnownPorts_DEFAULT
1427  */
1428 #define DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT \
1429 { \
1430  7400, /* port_base */ \
1431  250, /* domain_id_gain */ \
1432  2, /* participant_id_gain */ \
1433  0, /* builtin_multicast_port_offset */ \
1434  10, /* builtin_unicast_port_offset */ \
1435  1, /* user_multicast_port_offset */ \
1436  11 /* user_unicast_port_offset */ \
1437 }
1438 
1439 /*e \dref_WIREPROTOCOL_QOS_POLICY_NAME
1440  */
1441 extern DDSCDllVariable const char *const DDS_WIREPROTOCOL_QOS_POLICY_NAME;
1442 
1443 /* ----------------------------------------------------------------- */
1444 /*e \dref_WireProtocolQosPolicy
1445  */
1447 {
1448  /*e \dref_WireProtocolQosPolicy_participant_id
1449  */
1451  /*e \dref_WireProtocolQosPolicy_rtps_host_id
1452  */
1454 
1455  /*e \dref_WireProtocolQosPolicy_rtps_app_id
1456  */
1458 
1459  /*e \dref_WireProtocolQosPolicy_rtps_instance_id
1460  */
1462  /*e \dref_WireProtocolQosPolicy_rtps_well_known_ports
1463  */
1465 };
1466 
1467 enum
1468 {
1469  /*e \dref_WireProtocolQosPolicy_RTPS_AUTO_ID
1470  */
1472 };
1473 
1474 /*i \dref_WireProtocolQosPolicy_DEFAULT
1475  */
1476 #define DDS_WIRE_PROTOCOL_QOS_POLICY_DEFAULT { \
1477 -1 /* auto participant_id */, \
1478 DDS_RTPS_AUTO_ID /* rtps_host_id */, \
1479 DDS_RTPS_AUTO_ID /* rtps_app_id */, \
1480 DDS_RTPS_AUTO_ID /* rtps_instance_id */, \
1481 DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT /* rtps_well_known_ports */\
1482 }
1483 
1484 /* ----------------------------------------------------------------- */
1485 
1486 #define DDS_Locator RTPS_Locator
1487 #define DDS_Locator_t RTPS_Locator_t
1488 #define DDS_LocatorUdpv4_t RTPS_LocatorUdpv4_t
1489 #define DDS_LOCATOR_DEFAULT RTPS_LOCATOR_DEFAULT
1490 #define DDS_LOCATOR_UDPV4_DEFAULT RTPS_LOCATOR_UDPV4_DEFAULT
1491 
1492 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1493 
1494 /*e \dref_Locator_t
1495  */
1497 {
1498  /*e \dref_Locator_t_kind
1499  */
1501 
1502  /*e \dref_Locator_t_port
1503  */
1505 
1506  /*e \dref_Locator_t_address
1507  */
1508  DDS_Octet address[RTPS_LOCATOR_ADDRESS_LENGTH_MAX];
1509 };
1510 
1511 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1512 
1513 DDS_SEQUENCE(DDS_LocatorSeq, struct RTPS_Locator)
1514 
1515 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1516 /*e \dref_LocatorSeq
1517  */
1518 struct DDS_LocatorSeq {};
1519 #endif
1520 
1521 /*e
1522  * \dref_Locator_t_INVALID
1523  */
1524 #define DDS_LOCATOR_INVALID RTPS_LOCATOR_INVALID
1525 
1526 /*e
1527  * \dref_Locator_t_DEFAULT
1528  */
1529 #define DDS_LOCATOR_DEFAULT RTPS_LOCATOR_DEFAULT
1530 
1531 /*e
1532  * \dref_Locator_t_KIND_INVALID
1533  */
1534 #define DDS_LOCATOR_KIND_INVALID RTPS_LOCATOR_KIND_INVALID
1535 
1536 /*e
1537  * \dref_Locator_t_PORT_INVALID
1538  */
1539 #define DDS_LOCATOR_PORT_INVALID RTPS_LOCATOR_PORT_INVALID
1540 
1541 /*e
1542  * \dref_Locator_t_ADDRESS_INVALID
1543  */
1544 #define DDS_LOCATOR_ADDRESS_INVALID RTPS_LOCATOR_ADDRESS_INVALID
1545 
1546 /*e
1547  * \dref_Locator_t_KIND_UDPv4
1548  */
1549 #define DDS_LOCATOR_KIND_UDPv4 RTPS_LOCATOR_KIND_UDPv4
1550 
1551 /*e
1552  * \dref_Locator_t_KIND_UDPv6
1553  */
1554 #define DDS_LOCATOR_KIND_UDPv6 RTPS_LOCATOR_KIND_UDPv6
1555 
1556 /*e
1557  * \dref_Locator_t_KIND_RESERVED
1558  */
1559 #define DDS_LOCATOR_KIND_RESERVED RTPS_LOCATOR_KIND_RESERVED
1560 
1561 /*e
1562  * \dref_Locator_t_KIND_SHMEM
1563  */
1564 #define DDS_LOCATOR_KIND_SHMEM RTPS_LOCATOR_KIND_SHMEM
1565 
1566 /* ----------------------------------------------------------------- */
1567 
1568 /*e \dref_ProtocolVersion_t
1569  */
1570 typedef struct DDS_ProtocolVersion
1571 {
1572  /*e \dref_ProtocolVersion_t_major
1573  */
1575 
1576  /*e \dref_ProtocolVersion_t_minor
1577  */
1580 
1581 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(DDS_ProtocolVersion);
1582 
1583 /*i \dref_ProtocolVersion_DEFAULT
1584  */
1585 #define DDS_PROTOCOL_VERSION_DEFAULT { 0, 0 }
1586 
1587 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_1_0
1588  */
1589 #define DDS_PROTOCOLVERSION_1_0 { 1, 0 }
1590 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_1_1
1591  */
1592 #define DDS_PROTOCOLVERSION_1_1 { 1, 1 }
1593 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_1_2
1594  */
1595 #define DDS_PROTOCOLVERSION_1_2 { 1, 2 }
1596 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION
1597  */
1598 #define DDS_PROTOCOLVERSION_2_0 { 2, 0 }
1599 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_2_1
1600  */
1601 #define DDS_PROTOCOLVERSION_2_1 { 2, 1 }
1602 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION
1603  */
1604 #define DDS_PROTOCOLVERSION { 2, 1 }
1605 
1606 /*e \dref_VendorId_t_LENGTH_MAX
1607  */
1608 #define DDS_VENDOR_ID_LENGTH_MAX 2
1609 
1610 /*e \dref_VendorId_t
1611  */
1613 {
1614  /*e \dref_VendorId_t_vendorId
1615  */
1617 };
1618 
1619 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1620 /*e \dref_VendorId_t
1621  */
1623 {
1624  /*e \dref_VendorId_t_vendorId
1625  */
1627 };
1628 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1629 
1630 
1631 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(DDS_VendorId);
1632 #define DDS_VendorId_t DDS_VendorId
1633 
1634 /*i \dref_VendorId_dEFAULT
1635  */
1636 #define DDS_VENDOR_ID_DEFAULT { {0, 0} }
1637 
1638 /*i \dref_VendorId_t_VENDORID_UNKNOWN
1639  */
1640 #define DDS_VENDORID_UNKNOWN { {0, 0} }
1641 
1642 /* ----------------------------------------------------------------- */
1643 
1644 /*e \dref_ProductVersion_t
1645  */
1647 {
1648  /*e \dref_ProductVersion_t_major
1649  */
1651  /*e \dref_ProductVersion_t_minor
1652  */
1654  /*e \dref_ProductVersion_t_release
1655  */
1657  /*e \dref_ProductVersion_t_revision
1658  */
1660 };
1661 
1662 
1663 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1664 /*e \dref_ProductVersion_t
1665  */
1667 {
1668  /*e \dref_ProductVersion_t_major
1669  */
1671  /*e \dref_ProductVersion_t_minor
1672  */
1674  /*e \dref_ProductVersion_t_release
1675  */
1677  /*e \dref_ProductVersion_t_revision
1678  */
1680 };
1681 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1682 
1683 #define DDS_ProductVersion_t DDS_ProductVersion
1684 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(DDS_ProductVersion);
1685 
1686 /*e \dref_ProductVersion_t_UNKNOWN
1687  */
1688 #define DDS_PRODUCTVERSION_UNKNOWN { 0, 0, '0', 0 }
1689 
1690 /*i \dref_ProductVersion_DEFAULT
1691  */
1692 #define DDS_PRODUCTVERSION_DEFAULT { 2, 0, 'c', 1 }
1693 
1694 
1695 /* ----------------------------------------------------------------- */
1696 /* DATA_READER_PROTOCOL_X (eXtension QoS) */
1697 /* ----------------------------------------------------------------- */
1698 /*e \dref_DataReaderProtocolQosGroupDocs
1699  */
1700 
1701 /*e \dref_DATAREADERPROTOCOL_QOS_POLICY_NAME
1702  */
1703 extern DDSCDllVariable const char *const DDS_DATAREADERPROTOCOL_QOS_POLICY_NAME;
1704 
1705 /* ----------------------------------------------------------------- */
1706 /*e \dref_DataReaderProtocolQosPolicy
1707  */
1709 {
1710  /*e \dref_DataReaderProtocolQosPolicy_rtps_object_id
1711  */
1713 };
1714 
1715 /*i \dref_DataReaderProtocolQosPolicy_DEFAULT
1716  */
1717 #define DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT \
1718 { \
1719  DDS_RTPS_AUTO_ID \
1720 }
1721 
1722 /* ----------------------------------------------------------------- */
1723 
1724 /*e \dref_RtpsReliableWriterProtocol_t
1725  */
1727  {
1728  /*e \dref_RtpsReliableWriterProtocol_t_heartbeat_period
1729  */
1731 
1732  /*e \dref_RtpsReliableWriterProtocol_t_heartbeats_per_max_samples
1733  */
1735 
1736  /*e \dref_RtpsReliableWriterProtocol_t_max_send_window
1737  */
1739 
1740  /*e \dref_RtpsReliableWriterProtocol_t_max_heartbeat_retries
1741  */
1743 
1744  /*i \dref_RtpsReliableWriterProtocol_t_first_write_sequence_number
1745  */
1746  struct DDS_SequenceNumber_t first_write_sequence_number;
1747  };
1748 
1749 #define DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW (DDS_LENGTH_UNLIMITED)
1750 
1751 /*i \dref_RtpsReliableWriterProtocol_DEFAULT
1752  */
1753 #define DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT { \
1754  {3,0}, /* hb_period */ \
1755  1, /* hb_per_max_samples */ \
1756  DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW, /* max_send_window */ \
1757  DDS_LENGTH_UNLIMITED, /* max_heartbeat_retries */ \
1758  {0,1} /* first_write_sequence_number */\
1759 }
1760 
1761 /* ----------------------------------------------------------------- */
1762 /* DATA_WRITER_PROTOCOL_X (eXtension QoS) */
1763 /* ----------------------------------------------------------------- */
1764 /*e \dref_DataWriterProtocolQosGroupDocs
1765  */
1766 
1767 /*e \dref_DATAWRITERPROTOCOL_QOS_POLICY_NAME
1768  */
1769 extern DDSCDllVariable const char *const DDS_DATAWRITERPROTOCOL_QOS_POLICY_NAME;
1770 
1771 /* ----------------------------------------------------------------- */
1772 /*e \dref_DataWriterProtocolQosPolicy
1773  */
1775 {
1776  /*e \dref_DataWriterProtocolQosPolicy_rtps_object_id
1777  */
1779 
1780  /*e \dref_DataWriterProtocolQosPolicy_rtps_reliable_writer
1781  */
1783 };
1784 
1785 /*i \dref_DataWriterProtocolQosPolicy_DEFAULT
1786  */
1787 #define DDS_DATA_WRITER_PROTOCOL_QOS_POLICY_DEFAULT \
1788 { DDS_RTPS_AUTO_ID, \
1789  DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT\
1790 }
1791 
1792 /* ----------------------------------------------------------------- */
1793 /* TRANSPORT_QOS_POLICY (eXtension QoS) */
1794 /* ----------------------------------------------------------------- */
1795 /*e \dref_TransportQosGroupDocs
1796  */
1797 
1798 /*e \dref_TRANSPORT_QOS_POLICY_NAME
1799  */
1800 extern DDSCDllVariable const char *const DDS_TRANSPORT_QOS_POLICY_NAME;
1801 
1802 /* ----------------------------------------------------------------- */
1803 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1804 /*i \dref_StringSeq
1805  */
1806 struct DDS_StringSeq {};
1807 #endif
1808 
1809 
1810 /*e \dref_TransportQosPolicy
1811  */
1813 {
1814  /*e \dref_TransportQosPolicy_enabled_transports
1815  */
1816  struct DDS_StringSeq enabled_transports;
1817 };
1818 
1819 /*i \dref_TransportQosPolicy_DEFAULT
1820  */
1821 #define DDS_TRANSPORT_QOS_POLICY_DEFAULT \
1822 {\
1823  DDS_SEQUENCE_INITIALIZER(DDS_String)\
1824 }
1825 
1826 /* ----------------------------------------------------------------- */
1827 /* DOMAIN_PARTICIPANT_RESOURCE_LIMITS_X (eXtension QoS) */
1828 /* ----------------------------------------------------------------- */
1829 /*e \dref_DomainParticipantResourceLimitsQosGroupDocs
1830  */
1831 
1832 /*e \dref_DOMAINPARTICIPANTRESOURCELIMITS_QOS_POLICY_NAME
1833  */
1834 extern DDSCDllVariable const char *const
1836 
1837 /* ----------------------------------------------------------------- */
1838 
1839 /*e \dref_DomainParticipantResourceLimitsQosPolicy
1840  */
1842 {
1843  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_writer_allocation
1844  */
1846  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_reader_allocation
1847  */
1849  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_publisher_allocation
1850  */
1852  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_subscriber_allocation
1853  */
1855  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_topic_allocation
1856  */
1858 
1859  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_type_allocation
1860  */
1862 
1863  /*e \dref_DomainParticipantResourceLimitsQosPolicy_remote_participant_allocation
1864  */
1866 
1867  /*e \dref_DomainParticipantResourceLimitsQosPolicy_remote_writer_allocation
1868  */
1870 
1871  /*e \dref_DomainParticipantResourceLimitsQosPolicy_remote_reader_allocation
1872  */
1874 
1875  /*e \dref_DomainParticipantResourceLimitsQosPolicy_matching_writer_reader_pair_allocation
1876  */
1878 
1879  /*e \dref_DomainParticipantResourceLimitsQosPolicy_matching_reader_writer_pair_allocation
1880  */
1882 
1883  /*e \dref_DomainParticipantResourceLimitsQosPolicy_max_receive_ports
1884  */
1886 
1887  /*e \dref_DomainParticipantResourceLimitsQosPolicy_max_destination_ports
1888  */
1890 };
1891 
1892 /*i @ingroup DDSDomainParticipantResourceLimitsQosModule
1893  *
1894  * This constant is used below in
1895  * DDS_DOMAIN_PARTICIPANT_RESOURCE_LIMITS_QOS_POLICY_DEFAULT; other types
1896  * should not use it alone.
1897  */
1898 #define DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT (32L)
1899 
1900 
1901 /*i @ingroup DDSDomainParticipantResourceLimitsQosModule
1902  *
1903  * Several fields in this structure are actually never used. These fields
1904  * should be explicitly initialized when this structure is copied
1905  * from a lower layer structure to prevent the values from being left in
1906  * an uninitialized state. The unused fields include:
1907  *
1908  * - local_publisher_allocation.max_count
1909  * - local_subscriber_allocation.max_count
1910  * - local_topic_allocation.max_count
1911  * - matching_writer_reader_pair_allocation.initial_count
1912  * - matching_writer_reader_pair_allocation.max_count
1913  * - matching_reader_writer_pair_allocation.initial_count
1914  * - matching_reader_writer_pair_allocation.max_count
1915  */
1916 /*i \dref_DomainParticipantReasourceLimitsQosPolicy_DEFAULT
1917  */
1918 #define DDS_DOMAIN_PARTICIPANT_RESOURCE_LIMITS_QOS_POLICY_DEFAULT \
1919 {1L, /*local_writer_allocation*/ \
1920  1L, /*local_reader_allocation*/ \
1921  1L, /*local_publisher_allocation*/ \
1922  1L, /*local_subscriber_allocation*/ \
1923  1L, /*local_topic_allocation*/ \
1924  1L, /*local_type_allocation*/ \
1925  1L, /*remote_participant_allocation*/ \
1926  1L, /*remote_writer_allocation*/ \
1927  1L, /*remote_reader_allocation*/ \
1928  DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
1929  DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
1930  8L,\
1931  8L \
1932 }
1933 
1934 /* ----------------------------------------------------------------- */
1935 
1936 /*i \dref_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH
1937  */
1938 #define DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH (4)
1939 
1940 /*e \dref_BuiltinTopicKey_t
1941  */
1943 {
1944  /*e \dref_BuiltinTopicKey_t_value
1945  */
1946  DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE value[DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH];
1948 
1949 /*i @ingroup BuiltinTopicGroupDocs
1950  */
1951 #define DDS_BuiltinTopicKey_t_INITIALIZER { {0, 0, 0, 0} }
1952 
1953 /*e \dref_BuiltinTopicKey_t_AUTO
1954  */
1955 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_AUTO;
1956 
1957 /*e \dref_BuiltinTopicKey_t_UNKNOWN
1958  */
1959 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_UNKNOWN;
1960 
1961 /*i \dref_BuiltinTopicKey_t_PREFIX_UNKNOWN
1962  */
1963 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_PREFIX_UNKNOWN;
1964 
1965 /*i \dref_BuiltinTopicKey_t_PREFIX_UNKNOWN
1966  */
1967 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_PREFIX_AUTO;
1968 
1969 /*i \ingroup BuiltinTopicGroupDocs_equals
1970 */
1971 DDSCDllExport DDS_Boolean
1972 DDS_BuiltinTopicKey_equals(const DDS_BuiltinTopicKey_t *a,
1973  const DDS_BuiltinTopicKey_t *b);
1974 
1975 /*i \ingroup BuiltinTopicGroupDocs_prefix_equals
1976  */
1977 DDSCDllExport DDS_Boolean
1978 DDS_BuiltinTopicKey_prefix_equals(const DDS_BuiltinTopicKey_t *a,
1979  const DDS_BuiltinTopicKey_t *b);
1980 
1981 /*i \ingroup BuiltinTopicGroupDocs_suffix_equals
1982  */
1983 DDSCDllExport DDS_Boolean
1984 DDS_BuiltinTopicKey_suffix_equals(const DDS_BuiltinTopicKey_t *a,
1985  const DDS_BuiltinTopicKey_t *b);
1986 
1987 /*i \ingroup BuiltinTopicGroupDocs_copy_prefix
1988  */
1989 DDSCDllExport void
1990 DDS_BuiltinTopicKey_copy_prefix(DDS_BuiltinTopicKey_t *a,
1991  const DDS_BuiltinTopicKey_t *b);
1992 
1993 /*i \ingroup BuiltinTopicGroupDocs_copy_suffix
1994  */
1995 DDSCDllExport void
1996 DDS_BuiltinTopicKey_copy_suffix(DDS_BuiltinTopicKey_t *a,
1997  const DDS_BuiltinTopicKey_t *b);
1998 
1999 /*i \ingroup BuiltinTopicGroupDocs_from_guid
2000  */
2001 DDSCDllExport void
2002 DDS_BuiltinTopicKey_from_guid(DDS_BuiltinTopicKey_t *in,
2003  const DDS_InstanceHandle_t *out);
2004 
2005 /* ================================================================= */
2006 /* Condition and Waitsets */
2007 /* ================================================================= */
2008 
2009 /*ce \dref_Entity
2010  */
2011 typedef struct DDS_EntityImpl DDS_Entity;
2012 
2013 /* ----------------------------------------------------------------- */
2014 /*e \dref_ConditionsAndWaitsetsModuleDocs
2015  */
2016 
2017 /*ce \dref_Condition
2018  */
2019 typedef struct DDS_ConditionImpl DDS_Condition;
2020 
2021 /*ci @ingroup DDSConditionsModule
2022  @brief Pointer to DDS_Condition.
2023  */
2024 typedef struct DDS_ConditionImpl *DDS_Condition_ptr;
2025 
2026 /*ce \dref_ConditionSeq
2027  */
2028 DDS_SEQUENCE(DDS_ConditionSeq, struct DDS_ConditionImpl*)
2029 
2030 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2031 /*ce \dref_ConditionSeq
2032  */
2034 #endif
2035 
2036 /*ce \dref_Condition_get_trigger_value
2037  */
2038 DDSCDllExport DDS_Boolean
2040 
2041 /*i \dref_Condition_set_wrapper
2042  */
2043 DDSCDllExport void
2044 DDS_ConditionImpl_set_wrapper(DDS_Condition *self, void *wrapper);
2045 
2046 /*i \dref_Condition_get_wrapper
2047  */
2048 DDSCDllExport void**
2049 DDS_ConditionImpl_get_wrapper_ref(DDS_Condition *self);
2050 
2051 /* ----------------------------------------------------------------- */
2052 
2053 /*ce \dref_GuardCondition
2054  */
2055 typedef struct DDS_GuardConditionImpl DDS_GuardCondition;
2056 
2057 #define DDS_GuardCondition_as_condition(guard_condition_ptr_) \
2058  ((DDS_Condition*) guard_condition_ptr_)
2059 
2060 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2061 /*ce \dref_GuardCondition_as_condition
2062  */
2064 #endif /*DOXYGEN_DOCUMENTATION_ONLY*/
2065 
2066 /*ce \dref_GuardCondition_new
2067  */
2068 DDSCDllExport DDS_GuardCondition*
2070 
2071 #ifndef RTI_CERT
2072 /*ce \dref_GuardCondition_delete
2073  */
2074 DDSCDllExport DDS_ReturnCode_t
2076 #endif
2077 
2078 /*ce \dref_GuardCondition_set_trigger_value
2079  */
2080 DDSCDllExport DDS_ReturnCode_t
2082  DDS_Boolean value);
2083 
2084 /* ----------------------------------------------------------------- */
2085 
2086 /*ce \dref_StatusCondition
2087  */
2088 typedef struct DDS_StatusConditionImpl DDS_StatusCondition;
2089 
2090 #define DDS_StatusCondition_as_condition(status_cond_ptr_) \
2091  ((DDS_Condition*) status_cond_ptr_)
2092 
2093 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2094 /*ce \dref_StatusCondition_as_condition
2095  */
2097  DDS_StatusCondition *statusCondition);
2098 #endif /*DOXYGEN_DOCUMENTATION_ONLY*/
2099 
2100 
2101 /*ce \dref_StatusCondition_get_enabled_statuses
2102  */
2103 DDSCDllExport DDS_StatusMask
2105 
2106 /*ce \dref_StatusCondition_set_enabled_statuses
2107  */
2108 DDSCDllExport DDS_ReturnCode_t
2110  DDS_StatusMask mask);
2111 
2112 /*ce \dref_StatusCondition_get_entity
2113  */
2114 DDSCDllExport DDS_Entity*
2116 
2117 /*ce \dref_WaitSet
2118  */
2119 typedef struct DDS_WaitSetImpl DDS_WaitSet;
2120 
2121 /*ce \dref_WaitSet_new
2122  */
2123 DDSCDllExport DDS_WaitSet*
2124 DDS_WaitSet_new(void);
2125 
2126 /*ce \dref_WaitSet_delete
2127  */
2128 DDSCDllExport DDS_ReturnCode_t
2130 
2131 /*ce \dref_WaitSet_wait
2132  */
2133 DDSCDllExport DDS_ReturnCode_t
2135  struct DDS_ConditionSeq *active_conditions,
2136  const struct DDS_Duration_t *timeout);
2137 
2138 /*ce \dref_WaitSet_attach_condition
2139  */
2140 DDSCDllExport DDS_ReturnCode_t
2142 
2143 
2144 /*ce \dref_WaitSet_detach_condition
2145  */
2146 DDSCDllExport DDS_ReturnCode_t
2148 
2149 /*ce \dref_WaitSet_get_conditions
2150  */
2151 DDSCDllExport DDS_ReturnCode_t
2153  struct DDS_ConditionSeq *attached_conditions);
2154 
2155 /* ================================================================= */
2156 /* Listeners */
2157 /* ================================================================= */
2158 /*e \dref_EntityModuleDocs
2159  */
2160 
2161 /*ce \dref_Listener
2162  */
2164 {
2165  /*ce \dref_Listener_listener_data
2166  */
2168 };
2169 
2170 /*ce \dref_Listener_INITIALIZER
2171  */
2172 #define DDS_Listener_INITIALIZER { NULL }
2173 
2174 /* ================================================================= */
2175 /* Entity typedef */
2176 /* ================================================================= */
2177 
2178 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2179 /*ce \dref_DomainEntity
2180  */
2181 typedef struct DDS_DomainEntityImpl DDS_DomainEntity;
2182 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
2183 
2184 /* ================================================================= */
2185 /* DDS_Entity */
2186 /* ================================================================= */
2187 
2188 /*ce \dref_Entity_enable
2189  */
2190 DDSCDllExport DDS_ReturnCode_t
2192 
2193 /*ce \dref_Entity_is_enabled
2194  */
2195 DDSCDllExport DDS_Boolean
2197 
2198 /*ce \dref_Entity_get_instance_handle
2199  */
2200 DDSCDllExport DDS_InstanceHandle_t
2202 
2203 /*ce \dref_Entity_get_entity_kind
2204  */
2205 DDSCDllExport DDS_EntityKind_t
2207 
2208 /*ce \dref_Entity_get_statuscondition
2209  */
2210 DDSCDllExport DDS_StatusCondition*
2212 
2213 /*ce \dref_Entity_get_status_changes
2214  */
2215 DDSCDllExport DDS_StatusMask
2217 
2218 /*ci
2219  * \brief Associate a language-dependent wrapper object with a DDS_Entity.
2220  *
2221  * \long This operation is used to support access to the functionality of
2222  * the C implementation from other compatible programming languages, such as C++.
2223  * Implementations of the Micro API in these programming languages may use
2224  * this facility to associate objects created in their run-time environments
2225  * with DDS_Entity instances by means of this operation, and then access
2226  * them using DDS_Entity_get_wrapper, typically to support the correct
2227  * propagation of events from the C core to the wrapping programming language's
2228  * layer.
2229  *
2230  * \param[in] self a non NULL DDS_Entity
2231  * \param[in] wrapper pointer to a wrapper instance or NULL to delete an
2232  * existing association.
2233  */
2234 DDSCDllExport void
2235 DDS_Entity_set_wrapper(DDS_Entity *self, void *wrapper);
2236 
2237 /*ci
2238  * \brief Access a language-dependent wrapper object attached to the DDS_Entity.
2239  *
2240  * \long This operation is used to support access to the functionality of
2241  * the C implementation from other compatible programming languages, such as C++.
2242  * Implementations of the Micro API in these programming languages may use
2243  * this facility to associate objects created in their run-time environments
2244  * with DDS_Entity instances by means of DDS_Entity_set_wrapper, typically
2245  * to support the correct propagation of events from the C core to the wrapping
2246  * programming language's layer.
2247  *
2248  * \param[in] self a non NULL DDS_Entity
2249  *
2250  * \return a pointer to a wrapper object previously or NULL if none had been
2251  * previously set using DDS_Entity_set_wrapper.
2252  */
2253 DDSCDllExport void*
2254 DDS_Entity_get_wrapper(DDS_Entity *self);
2255 
2256 /* ----------------------------------------------------------------- */
2257 /* ENTITY_NAME */
2258 /* ----------------------------------------------------------------- */
2259 /*e \dref_EntityNameQosGroupDocs
2260  */
2261 
2262 /*e \dref_ENTITYNAME_QOS_POLICY_NAME
2263  */
2264 extern DDSCDllVariable const char *const DDS_ENTITYNAME_QOS_POLICY_NAME;
2265 
2266 /*e \dref_AUTO_NAME_ENTITY
2267  */
2268 extern DDSCDllVariable const char *const DDS_AUTO_NAME_ENTITY;
2269 
2270 /* ----------------------------------------------------------------- */
2271 /*e \dref_EntityNameQosPolicy_NAME_MAX
2272  */
2273 #define DDS_ENTITYNAME_QOS_NAME_MAX 255
2274 
2275 /*e \dref_EntityNameQosPolicy
2276  */
2278 {
2279  /*e \dref_EntityNameQosPolicy_name
2280  */
2282 };
2283 
2284 /*i \dref_EntityNameQosPolicy_DEFAULT
2285  */
2286 #define DDS_ENTITY_NAME_QOS_POLICY_DEFAULT { {'\0'} }
2287 
2288 /* ================================================================= */
2289 /* RTI_Management */
2290 /* ================================================================= */
2291 
2292 /*i \dref_ManagementQosPolicy
2293  */
2294 struct RTI_ManagementQosPolicy
2295 {
2296  DDS_Boolean is_hidden;
2297  DDS_Boolean is_anonymous;
2298 };
2299 
2300 /*i \dref_ManagementQosPolicy_DEFAULT
2301  */
2302 #define RTI_MANAGEMENT_QOS_POLICY_DEFAULT { \
2303  DDS_BOOLEAN_FALSE,\
2304  DDS_BOOLEAN_FALSE\
2305 }
2306 
2307 /* ================================================================= */
2308 /* DDS_DomainEntity */
2309 /* ================================================================= */
2310 
2311 /*ce \dref_DomainParticipant
2312  */
2313 typedef struct DDS_DomainParticipantImpl DDS_DomainParticipant;
2314 
2315 /* ----------------------------------------------------------------- */
2316 /*i
2317  */
2318 #define DDS_IntegerWithRange(__value, __low,__high) \
2319  ((__value) < (__low) ? -1 : ((__value) > (__high) ? 1 : 0))
2320 
2321 
2322 /* ================================================================= */
2323 /* DDSHST_History */
2324 /* ================================================================= */
2325 /*i \dref_DDSHST_ReturnCode_T
2326  */
2327 typedef enum
2328 {
2329  DDSHST_RETCODE_ERROR = -1000,
2330  DDSHST_RETCODE_NOSPACE,
2331  DDSHST_RETCODE_EXISTS,
2332  DDSHST_RETCODE_NOT_EXISTS,
2333  DDSHST_RETCODE_INVALID_PROPERTY,
2334  DDSHST_RETCODE_INVALID_ENTRY_REQUEST,
2335  DDSHST_RETCODE_SUCCESS = 0
2336 } DDSHST_ReturnCode_T;
2337 
2338 /*i \dref_ReplacePolicyKind_T
2339  */
2340 typedef enum
2341 {
2342  DDSHST_REPLACE_POLICY_KIND_OLDEST,
2343  DDSHST_REPLACE_POLICY_KIND_NONE
2344 } DDSHST_ReplacePolicyKind_T;
2345 
2346 
2347 /* ----------------------------------------------------------------- */
2348 /* WRITE_PARAMS */
2349 /* ----------------------------------------------------------------- */
2350 
2351 /*e \dref_SampleIdentity_t
2352  */
2354 {
2355  /*e \dref_SampleIdentity_t_writer_guid */
2357  /*e \dref_SampleIdentity_t_sequence_number */
2359 };
2360 
2361 
2362 /*ce \dref_SampleIdentity_t
2363  */
2364 #define DDS_SAMPLE_IDENTITY_UNKNOWN \
2365 { \
2366  DDS_GUID_INITIALIZER, \
2367  DDS_SEQUENCE_NUMBER_UNKNOWN \
2368 }
2369 
2370 /*e \dref_WriteParams
2371  */
2373 {
2374  /*e \dref_WriteParams_identity
2375  */
2377 
2378  /*e \dref_WriteParams_related_sample_identity
2379  */
2381 
2382  /*e \dref_WriteParams_source_timestamp
2383  */
2385 
2386  /*e \dref_WriteParams_handle
2387  */
2388  DDS_InstanceHandle_t handle;
2389 };
2390 
2391 /*e \dref_WriteParams_DEFAULT
2392  */
2393 #define DDS_WRITEPARAMS_DEFAULT \
2394 { \
2395  DDS_SAMPLE_IDENTITY_UNKNOWN, \
2396  DDS_SAMPLE_IDENTITY_UNKNOWN, \
2397  DDS_TIME_ZERO, \
2398  DDS_HANDLE_NIL_NATIVE \
2399 }
2400 
2401 /* ================================================================= */
2402 /* DDS Properties */
2403 /* ================================================================= */
2404 /* NOTE:
2405  * DDS_PropertySeq is not a exposed a general purpose property
2406  * sequence. It is only used to send required properties for RTI Tools.
2407  * Thus, although the generic sequence type is used to implement the property
2408  * sequence, its internal use is highly specialized and only a limited
2409  * number of functions are exposed.
2410  */
2411 #define DDS_PropertySeq CDR_PropertySeq
2412 #define DDS_Property CDR_Property
2413 #define DDS_PropertySeq_initialize CDR_PropertySeq_initialize
2414 #define DDS_PropertySeq_set_length CDR_PropertySeq_set_length
2415 #define DDS_PropertySeq_get_length CDR_PropertySeq_get_length
2416 #define DDS_PropertySeq_get_reference CDR_PropertySeq_get_reference
2417 #define DDS_PropertySeq_loan_contiguous CDR_PropertySeq_loan_contiguous
2418 
2419 /*i
2420  */
2421 DDSCDllExport struct DDS_PropertySeq*
2422 DDS_DomainParticipant_get_dds_properties(DDS_DomainParticipant *self);
2423 
2424 #ifdef __cplusplus
2425 } /* extern "C" */
2426 #endif
2427 
2428 #endif /* dds_c_infrastructure_h */

RTI Connext Micro Version 2.4.1.0 Copyright © Thu Nov 20 2014 Real-Time Innovations, Inc