RTI Connext DDS Micro  Version 2.4.7
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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-2016.
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  * 10feb2016,tk MICRO-1525 Added assignment operator to DDS_EntityNameQosPolicy
16  * 04nov2015,tk MICRO-1505 - Reduce memory footprint
17  * 15jul2015,tk MICRO-1426/PR#15358 Added Added DDS_Duration_delta_gt
18  * 30jun2015,tk MICRO-1323/PR#15020 Refactored definition of DDS_DURATION_INFINITE
19  * 19may2015,as MICRO-1193 Refactoring of Sequence API levels
20  * 02apr2014,eh MICRO-964/PR#12378 Remove from Cert unused locator defines
21  * 16mar2015,tk MICRO-1129/PR#14274 Increased size of entity_name to
22  * DDS_ENTITYNAME_QOS_NAME_MAX + 1
23  * 25feb2015,eh MICRO-1040/PR#13555 Remove unused DDS_Guid_equals/copy/compare
24  * 09feb2015,tk MICRO-1061/PR#13633 DDS_AUTOMATIC_LIVELINESS_QOS is now default
25  * 08oct2014,tk MICRO-919 Added SampleLostReason to SampleLost status
26  * MICRO-918 Removed TimeBasedFilter qos policy (unsupported)
27  * 20sep2014,as Make support functions for QosPolicy types private; remove macros DDSC_CPP_VALUE_TYPE_SUPPORT_FUNCTIONS
28  * and DDSC_CPP_SUPPORT_TYPE_SUPPORT_FUNCTIONS; update DDSC_CPP_VALUE_TYPE_SUPPORT_METHODS and
29  * DDSC_CPP_STATUS_TYPE_SUPPORT_METHODS to only define method signatures (no inline implementation)
30  * 04aug2014,tk MICRO-846/PR#10203 - Limit exposure of PropertySeq API
31  * MICRO-848/PR#10206 - Limit exposure of PropertySeq API
32  * 29jul2014,tk MICRO-864/PR#10245 Fixed C++ DDS_DataReaderResourceLimitsQosPolicy
33  * 19jul2013,as Added support for C++
34  * 06feb2013,eh MICRO-262: add max_remote_readers
35  * 29jun2012,tk Written
36  */
37 /*ce
38  * \file
39  * \brief DDS Domain Module definitions
40  */
41 /*e @addtogroup DDSInfrastructureModule Infrastructure Module
42  @ingroup DDSCModule
43 
44  @brief Defines the \dds infrastructure package
45 */
46 #ifndef dds_c_infrastructure_h
47 #define dds_c_infrastructure_h
48 
49 #ifndef dds_c_dll_h
50 #include "dds_c/dds_c_dll.h"
51 #endif
52 #ifndef osapi_thread_h
53 #include "osapi/osapi_thread.h"
54 #endif
55 #ifndef netio_rtps_h
56 #include "netio/netio_rtps.h"
57 #endif
58 #ifndef rtps_rtps_h
59 #include "rtps/rtps_rtps.h"
60 #endif
61 #ifndef dds_c_common_h
62 #include "dds_c/dds_c_common.h"
63 #endif
64 #ifndef dds_c_string_h
65 #include "dds_c/dds_c_string.h"
66 #endif
67 #ifndef dds_c_sequence_h
68 #include "dds_c/dds_c_sequence.h"
69 #endif
70 
71 #ifdef __cplusplus
72 extern "C"
73 {
74 #endif
75 
76 #ifndef NULL
77 #define NULL 0
78 #endif
79 
80 /* ================================================================= */
81 /* Micro DDS */
82 /* ================================================================= */
83 #define RTI_MICRODDS
84 #define RTI_MICRODDS_MAJOR 2
85 #define RTI_MICRODDS_MINOR 0
86 
87 /* ================================================================= */
88 /* CPP VALUE-TYPE SUPPORT */
89 /* ================================================================= */
90 
91 
92 #ifdef RTI_CPP
93 #define DDSC_CPP_QOS_POLICY_METHODS(T) \
94  public:\
95  T();
96 #ifndef RTI_CERT
97 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
98  public:\
99  T();\
100  ~T();\
101  DDS_ReturnCode_t copy(const T& from);\
102  T(const T& from);\
103  T& operator=(const T& from);\
104  bool operator==(const T& other);\
105  bool operator!=(const T& other);
106 #else /* ifdef RTI_CERT */
107 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
108  public:\
109  T();\
110  ~T();\
111  DDS_ReturnCode_t copy(const T& from);\
112  private: \
113  T(const T& from);\
114  T& operator=(const T& from);\
115  bool operator==(const T& other);\
116  bool operator!=(const T& other);
117 #endif /* ifdef RTI_CERT */
118 
119 #ifndef RTI_CERT
120 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T) \
121  public:\
122  T();\
123  ~T();\
124  T(const T& from);\
125  T& operator=(const T& from);\
126  bool operator==(const T& other);\
127  bool operator!=(const T& other);
128 #else
129 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T) \
130  public:\
131  T();\
132  ~T();\
133  private: \
134  T(const T& from);\
135  T& operator=(const T& from);\
136  bool operator==(const T& other);\
137  bool operator!=(const T& other);
138 #endif
139 
140 #else /* ifdef RTI_CPP */
141 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T)
142 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T)
143 #define DDSC_CPP_QOS_POLICY_METHODS(T)
144 #endif /* ifdef RTI_CPP */
145 
146 #define DDSC_QOS_POLICY_METHODS_DECL(T) \
147 DDSCDllExport void T##_initialize(struct T *policy);
148 
149 /* ================================================================= */
150 /* Time Support */
151 /* ================================================================= */
152 
153 /*e
154  * \dref_TimeSupportGroupDocs
155  */
156 
157 /*e
158  * \dref_Time_t
159  */
160 struct DDSCPPDllExport DDS_Time_t
161 {
162  /*e
163  * \dref_TimeStamp_sec
164  */
166 
167  /*e
168  * \dref_TimeStamp_nanosec
169  */
171 
172  DDSC_CPP_SUPPORT_METHODS_BASIC(DDS_Time_t)
173 
174 #ifdef RTI_CPP
175 public:
176  bool greater_than(const DDS_Time_t& other);
177  bool is_zero();
178 #endif
179 
180 };
181 
182 /* This is only used by tests, keep as macro */
183 #define DDS_Time_t_greater_than(l, r) \
184  (((l).sec > (r).sec) || \
185  (((l).sec == (r).sec) && \
186  ((l).nanosec > (r).nanosec)))
187 
188 #ifdef DOXYGEN_DOCUMENTATION_ONLY
189 /*e
190  * \dref_Time_t_greater_than
191  */
193  const struct DDS_Time_t *l, const struct DDS_Time_t *r);
194 
195 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
196 
197 /*e
198  * \dref_Time_t_ZERO
199  */
200 #define DDS_TIME_ZERO { 0L, 0UL }
201 
202 /* This is only used by tests, keep as macro */
203 #define DDS_Time_is_zero(timePtr) \
204  ((timePtr)->sec == 0L || (timePtr)->nanosec == 0UL)
205 
206 #ifdef DOXYGEN_DOCUMENTATION_ONLY
207 
208 /*e
209  * \dref_Time_t_is_zero
210  */
211  DDS_Boolean DDS_Time_is_zero(const struct DDS_Time_t *time);
212 
213 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
214 
215 /*e
216  * \dref_Time_t_INVALID_SEC
217  */
218 extern DDSCDllVariable const DDS_Long DDS_TIME_INVALID_SEC;
219 
220 /*e
221  * \dref_Time_t_INVALID_NSEC
222  */
223 extern DDSCDllVariable const DDS_UnsignedLong DDS_TIME_INVALID_NSEC;
224 
225 /*e
226  * \dref_Time_t_INVALID
227  */
228 extern DDSCDllVariable const struct DDS_Time_t DDS_TIME_INVALID;
229 
230 /* ================================================================= */
231 /* Duration */
232 /* ================================================================= */
233 
234 /*i \brief Internal constant for infinite seconds
235  */
236 #define DDS_DURATION_INFINITE_SEC_INITIALIZER 0x7fffffff
237 
238 /*i \brief Internal constant for infinite nanoseconds
239  */
240 #define DDS_DURATION_INFINITE_NSEC_INITIALIZER 0xffffffffUL
241 
242 /*e \dref_Duration_t
243  */
244 struct DDSCPPDllExport DDS_Duration_t
245 {
246  /*e \dref_TimeStamp_sec
247  */
249 
250  /*e \dref_TimeStamp_nanosec
251  */
253 
254  DDSC_CPP_SUPPORT_METHODS_BASIC(DDS_Duration_t)
255 
256 #ifdef RTI_CPP
257 public:
258  DDS_Boolean is_infinite();
259  int compare(const DDS_Duration_t *other);
260  void to_ntp_time(OSAPI_NtpTime *dst);
261  void from_ntp_time(const OSAPI_NtpTime *src);
262  DDS_Boolean equal(const DDS_Duration_t *other);
263  DDS_Boolean is_zero();
264 #endif
265 };
266 
267 /*i \brief A infinite duration initializer
268  */
269 #define DDS_DURATION_INFINITE_INITIALIZER \
270 { \
271  DDS_DURATION_INFINITE_SEC_INITIALIZER, \
272  DDS_DURATION_INFINITE_NSEC_INITIALIZER \
273 }
274 
275 /*e \dref_Duration_t_INFINITE_SEC
276  */
277 extern DDSCDllVariable const DDS_Long DDS_DURATION_INFINITE_SEC;
278 
279 /*e \dref_Duration_t_INFINITE_NSEC
280  */
281 extern DDSCDllVariable const DDS_UnsignedLong DDS_DURATION_INFINITE_NSEC;
282 
283 /*e \dref_Duration_t_INFINITE
284  */
285 extern DDSCDllVariable const struct DDS_Duration_t DDS_DURATION_INFINITE;
286 
287 /*ci \brief Approximate duration of a year.
288  *
289  * \details
290  * This value is an the number of seconds in a nominal non-leap
291  * year with 365 days, each day has 24 hours, and each day has 3600 seconds.
292  * It is only used as a chosen upper limit for certain Qos policies.
293  * Specifically, this value does not represent the exact number of seconds
294  * in any specific year.
295  */
296 extern DDSCDllVariable const struct DDS_Duration_t DDS_DURATION_YEAR;
297 
298 /*ci \brief 1 nanosecond represented as a duration structure
299  */
300 extern DDSCDllVariable const struct DDS_Duration_t DDS_DURATION_NANOSEC;
301 
302 /*e \dref_Duration_t_is_infinite
303  */
304 DDSCDllExport DDS_Boolean
305 DDS_Duration_is_infinite(const struct DDS_Duration_t *duration);
306 
307 /*ce \dref_Duration_t_compare
308  */
309 DDSCDllExport int
310 DDS_Duration_compare(const struct DDS_Duration_t *left,
311  const struct DDS_Duration_t *right);
312 
313 /*ce \dref_Duration_t_to_ntp_time
314  */
315 DDSCDllExport void
316 DDS_Duration_to_ntp_time(const struct DDS_Duration_t *self,
317  struct OSAPI_NtpTime *dst);
318 
319 /*ce \dref_Duration_t_from_ntp_time
320  */
321 DDSCDllExport void
323  const struct OSAPI_NtpTime *src);
324 
325 /*e
326  * \dref_Duration_t_equal
327  */
328 DDSCDllExport DDS_Boolean
329 DDS_Duration_equal(const struct DDS_Duration_t *self,
330  const struct DDS_Duration_t *other);
331 /*i
332  *\brief Set a duration structure's seconds and nanoseconds
333  *
334  * \param[inout] self The duration structure
335  * \param[in] sec The seconds part
336  * \param[in] nanosec The nanoseconds part
337  */
338 DDSCDllExport void
339 DDS_Duration_set(struct DDS_Duration_t *self,
341 
342 /*e \dref_Duration_t_ZERO_SEC
343  */
344 extern DDSCDllVariable const DDS_Long DDS_DURATION_ZERO_SEC;
345 
346 /*e \dref_Duration_t_ZERO_NSEC
347  */
348 extern DDSCDllVariable const DDS_UnsignedLong DDS_DURATION_ZERO_NSEC;
349 
350 /*e \dref_Duration_t_ZERO
351  */
352 extern DDSCDllVariable const struct DDS_Duration_t DDS_DURATION_ZERO;
353 
354 /*e \dref_Duration_t_is_zero
355  */
356 DDSCDllExport DDS_Boolean
357 DDS_Duration_is_zero(const struct DDS_Duration_t *duration);
358 
359 /*ci \brief Check if the delta between two durations exceed the specified limit
360  *
361  * \details
362  * This function checks if the time between two durations exceed the
363  * specified delta. Note that the concept of time is not
364  * relevant. The function only checks if (end - begin) > delta.
365  *
366  * This function does not perform any robustness checks and assumes that
367  * end >= begin.
368  *
369  * NOTE: This function assumes the delta is normalized as defined by
370  * \ref DDS_Duration_is_normalized.
371  *
372  * \param[in] delta The maximum allowed delta between the two durations
373  * \param[in] end The duration to be subtracted from
374  * \param[in] begin The duration to subtract
375  *
376  * \return RTI_TRUE if (end - begin) > delta, RTI_FALSE otherwise
377  */
378 DDSCDllExport DDS_Boolean
379 DDS_Duration_delta_gt(const struct DDS_Duration_t *const delta,
380  const struct DDS_Duration_t *const end,
381  const struct DDS_Duration_t *const begin);
382 
383 
384 /*ci
385  * \brief Check that a duration is normalized
386  *
387  * \details
388  * A normalized duration is defined as an INFINITE duration, or a duration
389  * were sec >= 0 and nanosec < 1000000000
390  *
391  * \param[in] self Duration to verify
392  *
393  * \return RTI_TRUE if the duration is normalized, RTI_FALSE if not
394  */
395 DDSCDllExport RTI_BOOL
396 DDS_Duration_is_normalized(const struct DDS_Duration_t *const self);
397 
398 /* ================================================================= */
399 /* Instance Handle */
400 /* ================================================================= */
401 
402 /*e \dref_InstanceHandle_t
403  */
404 typedef DDS_HANDLE_TYPE_NATIVE DDS_InstanceHandle_t;
405 
406 #define T DDS_InstanceHandle_t
407 #define TSeq DDS_InstanceHandleSeq
408 #include <reda/reda_sequence_decl.h>
409 
410 #ifdef DOXYGEN_DOCUMENTATION_ONLY
411 /*i \dref_InstanceHandleSeq
412  */
413 struct DDS_InstanceHandleSeq {};
414 #endif
415 
416 /*e \dref_InstanceHandle_t_NIL
417 */
418 extern DDSCDllVariable const DDS_InstanceHandle_t DDS_HANDLE_NIL;
419 
420 /*ce
421  * \brief Check two DDS_InstanceHandle_t structures for equality
422  *
423  * \param[in] self Left side of comparison
424  * \param[in] other Right side of comparison
425  *
426  * \return DDS_BOOLEAN_TRUE if the two structures are equal,
427  * DDS_BOOLEAN_FALSE otherwise
428  */
429 DDSCDllExport DDS_Boolean
430 DDS_InstanceHandle_equals(const DDS_InstanceHandle_t *self,
431  const DDS_InstanceHandle_t *other);
432 
433 #define DDS_InstanceHandle_is_nil(handlePtr) \
434  DDS_InstanceHandle_equals(handlePtr, &DDS_HANDLE_NIL)
435 
436 #ifdef DOXYGEN_DOCUMENTATION_ONLY
437 /*e \dref_InstanceHandle_t_is_nil
438  */
439 DDS_Boolean DDS_InstanceHandle_is_nil(const DDS_InstanceHandle_t * self);
440 #endif
441 
442 /*ci
443  * \brief Convert to a DDS_InstanceHandle_t from a RTPS_Guid
444  *
445  * \details
446  * Convert a host endian RTPS_Guid to a big-endian DDS_InstanceHandle_t.
447  *
448  * \param[out] self DDS_InstanceHandle_t to convert to
449  * \param[in] other Converted RTPS_Guid
450  *
451  * \sa \ref DDS_InstanceHandle_to_rtps
452  */
453 DDSCDllExport void
454 DDS_InstanceHandle_from_rtps(DDS_InstanceHandle_t *self,
455  const struct RTPS_Guid *other);
456 
457 /*ci
458  * \brief Convert from a DDS_InstanceHandle_t to a RTPS_Guid
459  *
460  * \details
461  * Convert a big-endian DDS_InstanceHandle_t to a host endian RTPS_Guid.
462  *
463  * \param[out] other RTPS_Guid to convert to
464  * \param[in] self Converted DDS_InstanceHandle_t
465  *
466  * \sa \ref DDS_InstanceHandle_from_rtps
467  */
468 DDSCDllExport void
469 DDS_InstanceHandle_to_rtps(struct RTPS_Guid *other,
470  const DDS_InstanceHandle_t *self);
471 
472 /*ci
473  * \brief Convert from an NETIO_Address to a DDS DDS_InstanceHandle_t
474  *
475  * \details
476  * Convert to a big-endian DDS_InstanceHandle_t from a host-endian
477  * NETIO_Address.
478  *
479  * \param[out] self DDS_InstanceHandle_t to convert to
480  * \param[in] other Converted NETIO_Address
481  *
482  * \sa \ref DDS_InstanceHandle_from_rtps
483  */
484 DDSCDllExport void
485 DDS_InstanceHandle_from_netio_address(DDS_InstanceHandle_t *self,
486  const struct NETIO_Address *other);
487 
488 /*ci
489  * \brief Compare two DDS_InstanceHandle_t structures for ordering
490  *
491  * \param[in] self Left side of comparison
492  * \param[in] other Right side of comparison
493  *
494  * \return positive integer if self is greater than other,
495  * negative integer if self is less than other
496  * zero if left is self to other
497  */
498 DDSCDllExport DDS_Long
499 DDS_InstanceHandle_compare(const DDS_InstanceHandle_t *self,
500  const DDS_InstanceHandle_t *other);
501 
502 /* ================================================================= */
503 /* GUID */
504 /* ================================================================= */
505 
506 /*e
507  * \dref_GUIDSupportGroupDocs
508  */
509 
510 /*e \dref_GUID_t
511  */
513 {
514  /*e \dref_GUID_t_value
515  */
517 };
518 
519 /*i \dref_GUID_t_INITIALIZER
520  */
521 #define DDS_GUID_INITIALIZER {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
522 
523 /*i \dref_GUID_t_AUTO
524 */
525 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_AUTO;
526 
527 /*e \dref_GUID_t_UNKNOWN
528 */
529 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_UNKNOWN;
530 
531 /*i \dref_GUID_t_PREFIX_UNKNOWN
532 */
533 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_PREFIX_UNKNOWN;
534 
535 /*i \dref_GUID_t_PREFIX_UNKNOWN
536  */
537 extern DDSCDllVariable const struct DDS_GUID_t DDS_GUID_PREFIX_AUTO;
538 
539 /*i \dref_GUID_t_to_rtps
540  * \brief Convert from a DDS_GUID_t to a RTPS_Guid
541  *
542  * \details
543  * This function converts a DDS_GUID_t type in big-endian order to a
544  * RTPS_Guid on host order.
545  *
546  * \param[out] other Output value
547  * \param[in] self Value to convert from
548  */
549 DDSCDllExport void
550 DDS_GUID_to_rtps(struct RTPS_Guid *other,
551  const struct DDS_GUID_t *self);
552 
553 /*i \dref_GUID_t_from_rtps
554  * \brief Convert from a RTPS GUID to a DDS_GUID_t
555  *
556  * \details
557  * This function converts from a RTPS_Guid in host order to a DDS_GUID_t in
558  * big-endian order.
559  *
560  * \param[out] self Output value
561  * \param[in] other Value to convert from
562  */
563 DDSCDllExport void
564 DDS_GUID_from_rtps(struct DDS_GUID_t *self,
565  const struct RTPS_Guid *other);
566 
567 /*i \dref_GUID_t_set_suffix
568  *
569  * \brief Set the suffix, the last 4 bytes, in a DDS_GUID_t in big-endian
570  * order
571  *
572  * \param[inout] self GUID to set suffix in
573  * \param[in] suffix Suffix to set
574  */
575 DDSCDllExport void
576 DDS_GUID_set_suffix(struct DDS_GUID_t *self,DDS_Long suffix);
577 
578 /* ================================================================= */
579 /* Sequence Number Support */
580 /* ================================================================= */
581 
582 /*e
583  * \dref_SequenceNumberSupportGroupDocs
584  */
585 
586 /*e \dref_SequenceNumber_t
587  */
588 struct DDSCPPDllExport DDS_SequenceNumber_t
589 {
590  /*e \dref_SequenceNumber_t_high
591  */
593 
594  /*e \dref_SequenceNumber_t_low
595  */
597 
598  DDSC_CPP_SUPPORT_METHODS_BASIC(DDS_SequenceNumber_t)
599 
600 #ifdef RTI_CPP
601 public:
602  int compare(const DDS_SequenceNumber_t *other);
603 #endif
604 };
605 
606 /*i \dref_SequenceNumber_NUMBER_UNKNOWN
607  */
608 #define DDS_SEQUENCE_NUMBER_UNKNOWN REDA_SEQUENCE_NUMBER_UNKNOWN
609 
610 /*i \dref_SequenceNumber_NUMBER_ZERO
611  */
612 #define DDS_SEQUENCE_NUMBER_ZERO REDA_SEQUENCE_NUMBER_ZERO
613 
614 /*i \dref_SequenceNumber_NUMBER_MAX
615  */
616 #define DDS_SEQUENCE_NUMBER_MAX REDA_SEQUENCE_NUMBER_MAX
617 
618 /*e \dref_SequenceNumber_t_compare
619  */
620 DDSCDllExport int
622  const struct DDS_SequenceNumber_t *sn2);
623 
624 
625 /* ================================================================= */
626 /* Return Types */
627 /* ================================================================= */
628 /*e \dref_ReturnCodeGroupDocs
629  */
630 
631 /* ----------------------------------------------------------------- */
632 /*e \dref_ReturnCode_t
633 */
634 typedef enum
635 {
636  /*e \dref_ReturnCode_t_RETCODE_OK
637  */
639 
640  /*e \dref_ReturnCode_t_RETCODE_ERROR
641  */
643 
644  /*e \dref_ReturnCode_t_RETCODE_UNSUPPORTED
645  */
647 
648  /*e \dref_ReturnCode_t_RETCODE_BAD_PARAMETER
649  */
651 
652  /*e \dref_ReturnCode_t_RETCODE_PRECONDITION_NOT_MET
653  */
655 
656  /*e \dref_ReturnCode_t_RETCODE_OUT_OF_RESOURCES
657  */
659 
660  /*e \dref_ReturnCode_t_RETCODE_NOT_ENABLED
661  */
663 
664  /*e \dref_ReturnCode_t_RETCODE_IMMUTABLE_POLICY
665  */
667 
668  /*e \dref_ReturnCode_t_RETCODE_INCONSISTENT_POLICY
669  */
671 
672  /*e \dref_ReturnCode_t_RETCODE_ALREADY_DELETED
673  */
675 
676  /*e \dref_ReturnCode_t_RETCODE_TIMEOUT
677  */
679 
680  /*e \dref_ReturnCode_t_RETCODE_NO_DATA
681  */
683 
684  /*e \dref_ReturnCode_t_RETCODE_ILLEGAL_OPERATION
685  */
688 
689 
690 /* ================================================================= */
691 /* VARIABLE LENGTH TYPES SUPPORT */
692 /* ================================================================= */
693 /*i @defgroup DDSVarLenType Full Variable Length Type Support
694  @ingroup DDSCommonModule
695  */
696 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(T) \
697  struct T; \
698  DDSCDllExport DDS_Boolean T ## _initialize(struct T* self); \
699  DDSCDllExport DDS_Boolean T ## _finalize(struct T* self); \
700  DDSCDllExport DDS_Boolean T ## _copy(struct T* self, const struct T* from);\
701  MUST_CHECK_RETURN DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
702 
703 /*i @defgroup DDSVarLenType Basic Variable Length Type Support
704  @ingroup DDSCommonModule
705  */
706 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(T) \
707  struct T; \
708  DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
709 
710 /* DDSCDllExport DDS_ReturnCode_t T ## _copy(struct T* self, const struct T* from); */
711 
712 /* ================================================================= */
713 /* Status Types */
714 /* ================================================================= */
715 
716 /*e \dref_StatusKindGroupDocs
717  */
718 
719 /*e \dref_StatusMask
720  */
722 
723 /*e \dref_STATUS_MASK_NONE
724  */
725 #define DDS_STATUS_MASK_NONE ((DDS_StatusMask) 0)
726 
727 /*e \dref_STATUS_MASK_ALL
728  */
729 #define DDS_STATUS_MASK_ALL (~DDS_STATUS_MASK_NONE)
730 
731 /* ----------------------------------------------------------------- */
732 /*e \dref_StatusKind
733  */
734 typedef enum
735 {
736  /*e \dref_StatusKind_INCONSISTENT_TOPIC_STATUS
737  */
739 
740  /*e \dref_StatusKind_OFFERED_DEADLINE_MISSED_STATUS
741  */
743 
744  /*e \dref_StatusKind_REQUESTED_DEADLINE_MISSED_STATUS
745  */
747 
748  /*e \dref_StatusKind_OFFERED_INCOMPATIBLE_QOS_STATUS
749  */
751 
752  /*e \dref_StatusKind_REQUESTED_INCOMPATIBLE_QOS_STATUS
753  */
755 
756  /*e \dref_StatusKind_SAMPLE_LOST_STATUS
757  */
758  DDS_SAMPLE_LOST_STATUS = 0x0001 << 7,
759 
760  /*e \dref_StatusKind_SAMPLE_REJECTED_STATUS
761  */
763 
764  /*e \dref_StatusKind_DATA_ON_READERS_STATUS
765  */
767 
768  /*e \dref_StatusKind_DATA_AVAILABLE_STATUS
769  */
771 
772  /*e \dref_StatusKind_LIVELINESS_LOST_STATUS
773  */
775 
776  /*e \dref_StatusKind_LIVELINESS_CHANGED_STATUS
777  */
779 
780  /*e \dref_StatusKind_PUBLICATION_MATCHED_STATUS
781  */
783 
784  /*e \dref_StatusKind_SUBSCRIPTION_MATCHED_STATUS
785  */
787 
788  /* --- Begin extended statuses --- */
789  /* The "right"-most 24 bits of the StatusMask are reserved
790  * for standard statuses. The remaining 8 bits are for extended statuses.
791  */
792 
793  /*e \dref_StatusKind_INSTANCE_REPLACED_STATUS
794  */
796 
797  /*e \dref_StatusKind_RELIABLE_READER_ACTIVITY_CHANGED_STATUS
798  */
800 
802 
803 /* ================================================================= */
804 /* QoS Types */
805 /* ================================================================= */
806 /*e \dref_QosPoliciesGroupDocs
807  */
808 
809 /*e \dref_QosPolicyId_t
810  *
811  * Note that the value of these constants disagree with the values of
812  * the corresponding parameter IDs in the RTPS protocol. This conflict
813  * is unavoidable since these values are given in the DDS specification,
814  * which is not tied to RTPS.
815  */
816 typedef enum
817 {
818  /*e \dref_QosPolicyId_t_INVALID_QOS_POLICY_ID
819  */
821 
822  /*i \dref_QosPolicyId_t_USERDATA_QOS_POLICY_ID
823  */
824  DDS_USERDATA_QOS_POLICY_ID = 1,
825 
826  /*i \dref_QosPolicyId_t_DURABILITY_QOS_POLICY_ID
827  */
828  DDS_DURABILITY_QOS_POLICY_ID = 2,
829 
830  /*i \dref_QosPolicyId_t_PRESENTATION_QOS_POLICY_ID
831  */
832  DDS_PRESENTATION_QOS_POLICY_ID = 3,
833 
834  /*e \dref_QosPolicyId_t_DEADLINE_QOS_POLICY_ID
835  */
837 
838  /*i \dref_QosPolicyId_t_LATENCYBUDGET_QOS_POLICY_ID
839  */
840  DDS_LATENCYBUDGET_QOS_POLICY_ID = 5,
841 
842  /*e \dref_QosPolicyId_t_OWNERSHIP_QOS_POLICY_ID
843  */
845 
846  /*e \dref_QosPolicyId_t_OWNERSHIPSTRENGTH_QOS_POLICY_ID
847  */
849 
850  /*e \dref_QosPolicyId_t_LIVELINESS_QOS_POLICY_ID
851  */
853 
854  /*i \dref_QosPolicyId_t_TIMEBASEDFILTER_QOS_POLICY_ID
855  */
856  DDS_TIMEBASEDFILTER_QOS_POLICY_ID = 9,
857 
858  /*i \dref_QosPolicyId_t_PARTITION_QOS_POLICY_ID
859  */
860  DDS_PARTITION_QOS_POLICY_ID = 10,
861 
862  /*e \dref_QosPolicyId_t_RELIABILITY_QOS_POLICY_ID
863  */
865 
866  /*i \dref_QosPolicyId_t_DESTINATIONORDER_QOS_POLICY_ID
867  */
868  DDS_DESTINATIONORDER_QOS_POLICY_ID = 12,
869 
870  /*e \dref_QosPolicyId_t_HISTORY_QOS_POLICY_ID
871  */
873 
874  /*i \dref_QosPolicyId_t_RESOURCELIMITS_QOS_POLICY_ID
875  */
876  DDS_RESOURCELIMITS_QOS_POLICY_ID = 14,
877 
878  /*e \dref_QosPolicyId_t_ENTITYFACTORY_QOS_POLICY_ID
879  */
881 
882  /*i \dref_QosPolicyId_t_WRITERDATALIFECYCLE_QOS_POLICY_ID
883  */
884  DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID = 16,
885 
886  /*i \dref_QosPolicyId_t_READERDATALIFECYCLE_QOS_POLICY_ID
887  */
888  DDS_READERDATALIFECYCLE_QOS_POLICY_ID = 17,
889 
890  /*i \dref_QosPolicyId_t_TOPICDATA_QOS_POLICY_ID
891  */
892  DDS_TOPICDATA_QOS_POLICY_ID = 18,
893 
894  /*i \dref_QosPolicyId_t_GROUPDATA_QOS_POLICY_ID
895  */
896  DDS_GROUPDATA_QOS_POLICY_ID = 19,
897 
898  /*i \dref_QosPolicyId_t_TRANSPORTPRIORITY_QOS_POLICY_ID
899  */
900  DDS_TRANSPORTPRIORITY_QOS_POLICY_ID = 20,
901 
902  /*i \dref_QosPolicyId_t_LIFESPAN_QOS_POLICY_ID
903  */
904  DDS_LIFESPAN_QOS_POLICY_ID = 21,
905 
906  /*i \dref_QosPolicyId_t_DURABILITYSERVICE_QOS_POLICY_ID
907  */
908  DDS_DURABILITYSERVICE_QOS_POLICY_ID = 22,
909 
911 
912 /* ----------------------------------------------------------------- */
913 /*i \dref_QosPolicyCount
914  */
915 struct DDS_QosPolicyCount
916 {
917  /*e \dref_QosPolicyCount_policy_id
918  */
919  DDS_QosPolicyId_t policy_id;
920 
921  /*e \dref_QosPolicyCount_count
922  */
923  DDS_Long count;
924 };
925 
926 #define T struct DDS_QosPolicyCount
927 #define TSeq DDS_QosPolicyCountSeq
928 #include <reda/reda_sequence_decl.h>
929 
930 #ifdef DOXYGEN_DOCUMENTATION_ONLY
931 /*i \dref_QosPolicyCountSeq
932  */
933 struct DDS_QosPolicyCountSeq
934 {
935 };
936 #endif
937 
938 /* ================================================================= */
939 /* Entity Types */
940 /* ================================================================= */
941 
942 /*e \dref_EntityKind_t
943 */
944 typedef enum
945 {
946  /*e \dref_EntityKind_t_UNKNOWN_ENTITY_KIND
947  */
949  /*e \dref_EntityKind_t_PARTICIPANT_ENTITY_KIND
950  */
952  /*e \dref_EntityKind_t_PUBLISHER_ENTITY_KIND
953  */
955  /*e \dref_EntityKind_t_SUBSCRIBER_ENTITY_KIND
956  */
958  /*e \dref_EntityKind_t_TOPIC_ENTITY_KIND
959  */
961  /*e \dref_EntityKind_t_DATAREADER_ENTITY_KIND
962  */
964  /*e \dref_EntityKind_t_DATAWRITER_ENTITY_KIND
965  */
968 
969 /* ----------------------------------------------------------------- */
970 /* DEADLINE */
971 /* ----------------------------------------------------------------- */
972 /*e \dref_DeadlineQosGroupDocs
973  */
974 
975 /*e \dref_DEADLINE_QOS_POLICY_NAME
976  */
977 extern DDSCDllVariable const char *const DDS_DEADLINE_QOS_POLICY_NAME;
978 
979 /* ----------------------------------------------------------------- */
980 /*e \dref_DeadlineQosPolicy
981  */
982 struct DDSCPPDllExport DDS_DeadlineQosPolicy
983 {
984  /*e \dref_DeadlineQosPolicy_period
985  */
986  struct DDS_Duration_t period;
987 
988  DDSC_CPP_QOS_POLICY_METHODS(DDS_DeadlineQosPolicy)
989 };
990 
991 DDSC_QOS_POLICY_METHODS_DECL(DDS_DeadlineQosPolicy)
992 
993 /*ci
994  * \brief Calculate the sampling frequency for the deadline Qos policy
995  *
996  * \details
997  *
998  * A deadline is measured between two sent or received samples. However,
999  * when no more samples are received there is nothing to compare against. To
1000  * solve this problem a periodic check can be performed. Every period a check
1001  * is performed to check if a sample should have been received. If the time
1002  * since the last check exceeds the deadline period the deadline has been
1003  * missed. This function calculates a reasonable sampling frequency for
1004  * different deadlines. The sampling frequency is based on a reasonable effort
1005  * to detect a stale instance without overloading the CPU. The constants used
1006  * in this function are not used elsewhere and the method to calculate the
1007  * sampling frequency is considered a formula. Thus, the constants are not
1008  * considered magic.
1009  *
1010  * NOTE: This function assumes valid deadline and sample_freq inputs.
1011  * Invalid arguments have undefined behavior.
1012  *
1013  * \param[in] deadline The deadline to calculate a sampling frequency for
1014  * \param[out] sample_freq A suitable sampling frequency for deadline
1015  */
1016 DDSCDllExport void
1017 DDS_DeadlineQosPolicy_get_sample_freq(
1018  const struct DDS_DeadlineQosPolicy *const deadline,
1019  struct DDS_Duration_t *const sample_freq);
1020 
1021 /*i
1022  * \brief Convert a duration to ms
1023  *
1024  * \details
1025  * This function converts from sec,nanosec to milliseconds. Note that
1026  * no check is performed for overflow.
1027  *
1028  * \param[in] self Duration structure to convert to ms
1029  */
1030 DDSCDllExport DDS_Long
1031 DDS_Duration_to_ms(const struct DDS_Duration_t *const self);
1032 
1033 /*i \dref_DeadlineQosPolicy_DEFAULT
1034  * Default is infinite
1035  */
1036 #define DDS_DEADLINE_QOS_POLICY_DEFAULT \
1037 {DDS_DURATION_INFINITE_INITIALIZER}
1038 
1039 /* ----------------------------------------------------------------- */
1040 /* OWNERSHIP */
1041 /* ----------------------------------------------------------------- */
1042 /*e \dref_OwnershipQosGroupDocs
1043  */
1044 
1045 /*e \dref_OWNERSHIP_QOS_POLICY_NAME
1046  */
1047 extern DDSCDllVariable const char *const DDS_OWNERSHIP_QOS_POLICY_NAME;
1048 
1049 /* ----------------------------------------------------------------- */
1050 /*e \dref_OwnershipQosPolicyKind
1051  */
1052 typedef enum
1053 {
1054  /*e \dref_OwnershipQosPolicyKind_SHARED_OWNERSHIP_QOS
1055  */
1057 
1058  /*e \dref_OwnershipQosPolicyKind_EXCLUSIVE_OWNERSHIP_QOS
1059  */
1062 
1063 /* ----------------------------------------------------------------- */
1064 /*e \dref_OwnershipQosPolicy
1065  */
1066 struct DDSCPPDllExport DDS_OwnershipQosPolicy
1067 {
1068  /*e \dref_OwnershipQosPolicy_kind
1069  */
1071 
1072  DDSC_CPP_QOS_POLICY_METHODS(DDS_OwnershipQosPolicy)
1073 };
1074 
1075 /*i \dref_OwnershipQosPolicy_DEFAULT
1076  */
1077 #define DDS_OWNERSHIP_QOS_POLICY_DEFAULT { DDS_SHARED_OWNERSHIP_QOS }
1078 
1079 DDSC_QOS_POLICY_METHODS_DECL(DDS_OwnershipQosPolicy)
1080 
1081 /* ----------------------------------------------------------------- */
1082 /* OWNERSHIP_STRENGTH */
1083 /* ----------------------------------------------------------------- */
1084 /*e \dref_OwnershipStrengthQosGroupDocs
1085  */
1086 
1087 /*e \dref_OWNERSHIPSTRENGTH_QOS_POLICY_NAME
1088  */
1089 extern DDSCDllVariable const char *const DDS_OWNERSHIPSTRENGTH_QOS_POLICY_NAME;
1090 
1091 /* ----------------------------------------------------------------- */
1092 /*e \dref_OwnershipStrengthQosPolicy
1093  */
1094 struct DDSCPPDllExport DDS_OwnershipStrengthQosPolicy
1095 {
1096  /*e \dref_OwnershipStrengthQosPolicy_value
1097  */
1099 
1100  DDSC_CPP_QOS_POLICY_METHODS(DDS_OwnershipStrengthQosPolicy)
1101 };
1102 
1103 /*i \dref_OwnershipStrengthQosPolicy_DEFAULT
1104  */
1105 #define DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT { 0L }
1106 
1107 DDSC_QOS_POLICY_METHODS_DECL(DDS_OwnershipStrengthQosPolicy)
1108 
1109 /* ----------------------------------------------------------------- */
1110 /* LIVELINESS */
1111 /* ----------------------------------------------------------------- */
1112 /*e \dref_LivelinessQosGroupDocs
1113  */
1114 
1115 /*e \dref_LIVELINESS_QOS_POLICY_NAME
1116  */
1117 extern DDSCDllVariable const char *const DDS_LIVELINESS_QOS_POLICY_NAME;
1118 
1119 /* ----------------------------------------------------------------- */
1120 /*e \dref_LivelinessQosPolicyKind
1121  */
1122 typedef enum
1123 {
1124  /*i \dref_LivelinessQosPolicyKind_AUTOMATIC_LIVELINESS_QOS
1125  */
1126  DDS_AUTOMATIC_LIVELINESS_QOS,
1127 
1128  /*i \dref_LivelinessQosPolicyKind_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS
1129  */
1130  DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
1131 
1132  /*e \dref_LivelinessQosPolicyKind_MANUAL_BY_TOPIC_LIVELINESS_QOS
1133  */
1136 
1137 /* ----------------------------------------------------------------- */
1138 /*e \dref_LivelinessQosPolicy
1139  */
1140 struct DDSCPPDllExport DDS_LivelinessQosPolicy
1141 {
1142  /*e \dref_LivelinessQosPolicy_kind
1143  */
1145 
1146  /*e \dref_LivelinessQosPolicy_lease_duration
1147  */
1148  struct DDS_Duration_t lease_duration;
1149 
1150  DDSC_CPP_QOS_POLICY_METHODS(DDS_LivelinessQosPolicy)
1151 };
1152 
1153 /*i \dref_LivelinessQosPolicy_DEFAULT
1154  * Default least duration is infinite
1155  */
1156 #define DDS_LIVELINESS_QOS_POLICY_DEFAULT \
1157 {\
1158  DDS_AUTOMATIC_LIVELINESS_QOS,\
1159  DDS_DURATION_INFINITE_INITIALIZER \
1160 }
1161 
1162 DDSC_QOS_POLICY_METHODS_DECL(DDS_LivelinessQosPolicy)
1163 
1164 /* ----------------------------------------------------------------- */
1165 /* RELIABILITY */
1166 /* ----------------------------------------------------------------- */
1167 /*e \dref_ReliabilityQosGroupDocs
1168  */
1169 
1170 /*e \dref_RELIABILITY_QOS_POLICY_NAME
1171  */
1172 extern DDSCDllVariable const char *const DDS_RELIABILITY_QOS_POLICY_NAME;
1173 
1174 /* ----------------------------------------------------------------- */
1175 /*e \dref_ReliabilityQosPolicyKind
1176  */
1177 typedef enum
1178 {
1179  /*e \dref_ReliabilityQosPolicyKind_BEST_EFFORT_RELIABILITY_QOS
1180  */
1182 
1183  /*e \dref_ReliabilityQosPolicyKind_RELIABLE_RELIABILITY_QOS
1184  * NOTE: The RTPS spec defines reliability as 0x03 to comply with RTPS spec.
1185  * However, RTI Connext Core uses 0x3, as well as others.
1186  */
1189 
1190 /* ----------------------------------------------------------------- */
1191 /*e \dref_ReliabilityQosPolicy
1192  */
1193 struct DDSCPPDllExport DDS_ReliabilityQosPolicy
1194 {
1195  /*e \dref_ReliabilityQosPolicy_kind
1196  */
1198 
1199  /*e \dref_ReliabilityQosPolicy_max_blocking_time
1200  */
1201  struct DDS_Duration_t max_blocking_time;
1202 
1203  DDSC_CPP_QOS_POLICY_METHODS(DDS_ReliabilityQosPolicy)
1204 };
1205 
1206 /*i \dref_ReliabilityQosPolicy_DEFAULT
1207  */
1208 #define DDS_RELIABILITY_QOS_POLICY_DEFAULT \
1209  { DDS_BEST_EFFORT_RELIABILITY_QOS, \
1210  {0L, 0UL} }
1211 
1212 DDSC_QOS_POLICY_METHODS_DECL(DDS_ReliabilityQosPolicy)
1213 
1214 /* ----------------------------------------------------------------- */
1215 /* HISTORY */
1216 /* ----------------------------------------------------------------- */
1217 /*e \dref_HistoryQosGroupDocs
1218  */
1219 
1220 /*e \dref_HISTORY_QOS_POLICY_NAME
1221  */
1222 extern DDSCDllVariable const char *const DDS_HISTORY_QOS_POLICY_NAME;
1223 
1224 /* ----------------------------------------------------------------- */
1225 /*e \dref_HistoryQosPolicyKind
1226  */
1227 typedef enum
1228 {
1229  /*e \dref_HistoryQosPolicyKind_KEEP_LAST_HISTORY_QOS
1230  */
1232 
1233  /*i \dref_HistoryQosPolicyKind_KEEP_ALL_HISTORY_QOS
1234  */
1235  DDS_KEEP_ALL_HISTORY_QOS
1237 
1238 /*ci \brief The maximum allowed history depth.
1239  *
1240  * \details
1241  * The maximum depth is the maximum positive integer which can be
1242  * represented by a 32 bit signed integer.
1243  */
1244 #define DDS_MAX_DEPTH_HISTORY_QOS (2147483647)
1245 
1246 /* ----------------------------------------------------------------- */
1247 /*e \dref_HistoryQosPolicy
1248  */
1249 struct DDSCPPDllExport DDS_HistoryQosPolicy
1250 {
1251  /*e \dref_HistoryQosPolicy_kind
1252  */
1254 
1255  /*e \dref_HistoryQosPolicy_depth
1256  */
1258 
1259  DDSC_CPP_QOS_POLICY_METHODS(DDS_HistoryQosPolicy)
1260 };
1261 
1262 /*i \dref_HistoryQosPolicy_DEFAULT
1263  */
1264 #define DDS_HISTORY_QOS_POLICY_DEFAULT { DDS_KEEP_LAST_HISTORY_QOS, \
1265  1L /* depth */ }
1266 
1267 DDSC_QOS_POLICY_METHODS_DECL(DDS_HistoryQosPolicy)
1268 
1269 /* ----------------------------------------------------------------- */
1270 /* DURABILITY */
1271 /* ----------------------------------------------------------------- */
1272 /*e \dref_DurabilityQosGroupDocs
1273 */
1274 
1275 /*e \dref_DURABILITY_QOS_POLICY_NAME
1276  */
1277 extern DDSCDllVariable const char *const DDS_DURABILITY_QOS_POLICY_NAME;
1278 
1279 /* ----------------------------------------------------------------- */
1280 /*e \dref_DurabilityQosPolicyKind
1281 */
1282 typedef enum
1283 {
1284  /*e \dref_DurabilityQosPolicyKind_VOLATILE_DURABILITY_QOS
1285  */
1287 
1288  /*e \dref_DurabilityQosPolicyKind_TRANSIENT_LOCAL_DURABILITY_QOS
1289  */
1291 
1292  /*i \dref_DurabilityQosPolicyKind_TRANSIENT_DURABILITY_QOS
1293  */
1294  DDS_TRANSIENT_DURABILITY_QOS,
1295 
1296  /*i \dref_DurabilityQosPolicyKind_PERSISTENT_DURABILITY_QOS
1297  */
1298  DDS_PERSISTENT_DURABILITY_QOS
1300 
1301 /* ----------------------------------------------------------------- */
1302 /*e \dref_DurabilityQosPolicy
1303  */
1304 struct DDSCPPDllExport DDS_DurabilityQosPolicy
1305 {
1306  /*e \dref_DurabilityQosPolicy_kind
1307  */
1309 
1310  DDSC_CPP_QOS_POLICY_METHODS(DDS_DurabilityQosPolicy)
1311 };
1312 
1313 /*i \dref_DurabilityQosPolicy_DEFAULT
1314  */
1315 #define DDS_DURABILITY_QOS_POLICY_DEFAULT \
1316 { DDS_VOLATILE_DURABILITY_QOS }
1317 
1318 DDSC_QOS_POLICY_METHODS_DECL(DDS_DurabilityQosPolicy)
1319 
1320 /* ----------------------------------------------------------------- */
1321 /* RESOURCE_LIMITS */
1322 /* ----------------------------------------------------------------- */
1323 /*e \dref_ResourceLimitsQosGroupDocs
1324  */
1325 
1326 /*e \dref_RESOURCELIMITS_QOS_POLICY_NAME
1327  */
1328 extern DDSCDllVariable const char *const DDS_RESOURCELIMITS_QOS_POLICY_NAME;
1329 
1330 /*e \dref_LENGTH_UNLIMITED
1331  */
1332 extern DDSCDllVariable const DDS_Long DDS_LENGTH_UNLIMITED;
1333 
1334 /*e \dref_LENGTH_AUTO
1335  */
1336 extern DDSCDllVariable const DDS_Long DDS_LENGTH_AUTO;
1337 
1338 /* ----------------------------------------------------------------- */
1339 /*e \dref_ResourceLimitsQosPolicy
1340  */
1341 struct DDSCPPDllExport DDS_ResourceLimitsQosPolicy
1342 {
1343  /*e \dref_ResourceLimitsQosPolicy_max_samples
1344  */
1346 
1347  /*e \dref_ResourceLimitsQosPolicy_max_instances
1348  */
1350 
1351  /*e \dref_ResourceLimitsQosPolicy_max_samples_per_instance
1352  */
1354 
1355  DDSC_CPP_QOS_POLICY_METHODS(DDS_ResourceLimitsQosPolicy)
1356 };
1357 
1358 /*i \dref_ResourceLimitsQosPolicy_DEFAULT
1359  */
1360 #define DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1361  1L, /* max_samples */ \
1362  1L, /* max_instances */ \
1363  1L, /* max_samples_per_instance */ \
1364 }
1365 
1366 DDSC_QOS_POLICY_METHODS_DECL(DDS_ResourceLimitsQosPolicy)
1367 
1368 /* ----------------------------------------------------------------- */
1369 /*e \dref_DataReaderResourceLimitsInstanceReplacementKind
1370 */
1371 typedef enum
1372 {
1373  /*e \dref_DataReaderResourceLimitsInstanceReplacementKind_NO_INSTANCE_REPLACEMENT_QOS
1374  */
1376 
1377  /*e \dref_DataReaderResourceLimitsInstanceReplacementKind_REPLACE_OLDEST_INSTANCE_REPLACEMENT_QOS
1378  */
1381 
1382 /* ----------------------------------------------------------------- */
1383 /* DATAREADER_RESOURCE_LIMITS */
1384 /* ----------------------------------------------------------------- */
1385 /*e \dref_DataReaderResourceLimitsQosGroupDocs
1386  */
1387 
1388 /*e \dref_DATAREADERRESOURCELIMITS_QOS_POLICY_NAME
1389  */
1390 extern DDSCDllVariable const char *const
1392 
1393 /* ----------------------------------------------------------------- */
1394 /*e \dref_DataReaderResourceLimitsQosPolicy
1395  */
1397 {
1398  /*e \dref_DataReaderResourceLimitsQosPolicy_max_remote_writers
1399  */
1401 
1402  /*e \dref_DataReaderResourceLimitsQosPolicy_max_remote_writers_per_instance
1403  */
1405 
1406  /*e \dref_DataReaderResourceLimitsQosPolicy_max_samples_per_remote_writer
1407  */
1409 
1410  /*e \dref_DataReaderResourceLimitsQosPolicy_max_outstanding_reads
1411  */
1413 
1414  /*e \dref_DataReaderResourceLimitsQosPolicy_instance_replacement
1415  */
1417 
1418  /*e \dref_DataReaderResourceLimitsQosPolicy_max_routes_per_writer
1419  */
1421 
1422  DDSC_CPP_QOS_POLICY_METHODS(DDS_DataReaderResourceLimitsQosPolicy)
1423 };
1424 
1425 /*i \dref_DataReaderResourceLimitsQosPolicy_DEFAULT
1426  */
1427 #define DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1428  1L, /* max_remote_writers */ \
1429  1L, /* max_remote_writers_per_instance */ \
1430  1L, /* max_samples_per_remote_writer */ \
1431  1L, /* max_outstanding_reads */ \
1432  DDS_NO_INSTANCE_REPLACEMENT_QOS, /* Default */ \
1433  4\
1434 }
1435 
1436 DDSC_QOS_POLICY_METHODS_DECL(DDS_DataReaderResourceLimitsQosPolicy)
1437 
1438 /* ----------------------------------------------------------------- */
1439 /* DATAWRITER_RESOURCE_LIMITS */
1440 /* ----------------------------------------------------------------- */
1441 /*e \dref_DataWriterResourceLimitsQosGroupDocs
1442  */
1443 
1444 /*e \dref_DATAWRITERRESOURCELIMITS_QOS_POLICY_NAME
1445  */
1446 extern DDSCDllVariable const char *const
1448 
1449 /* ----------------------------------------------------------------- */
1450 /*e \dref_DataWriterResourceLimitsQosPolicy
1451  */
1453 {
1454  /*e \dref_DataWriterResourceLimitsQosPolicy_max_remote_readers
1455  */
1457 
1458  /*e \dref_DataWriterResourceLimitsQosPolicy_max_routes_per_reader
1459  */
1461 
1462  DDSC_CPP_QOS_POLICY_METHODS(DDS_DataWriterResourceLimitsQosPolicy)
1463 };
1464 
1465 /*i \dref_DataWriterResourceLimitsQosPolicy_DEFAULT
1466  */
1467 #define DDS_DATAWRITERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1468  16L, /* max_remote_readers */ \
1469  4\
1470 }
1471 
1472 DDSC_QOS_POLICY_METHODS_DECL(DDS_DataWriterResourceLimitsQosPolicy)
1473 
1474 /* ----------------------------------------------------------------- */
1475 /* ENTITY_FACTORY */
1476 /* ----------------------------------------------------------------- */
1477 /*e \dref_EntityFactoryQosGroupDocs
1478  */
1479 
1480 /*e \dref_ENTITYFACTORY_QOS_POLICY_NAME
1481  */
1482 extern DDSCDllVariable const char *const DDS_ENTITYFACTORY_QOS_POLICY_NAME;
1483 
1484 /* ----------------------------------------------------------------- */
1485 /*e \dref_EntityFactoryQosPolicy
1486  */
1487 struct DDSCPPDllExport DDS_EntityFactoryQosPolicy
1488 {
1489  /*e \dref_EntityFactoryQosPolicy_autoenable_created_entities
1490  */
1492 
1493  DDSC_CPP_QOS_POLICY_METHODS(DDS_EntityFactoryQosPolicy)
1494 };
1495 
1496 /*i \dref_EntityFactoryQosPolicy_DEFAULT
1497  */
1498 #define DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT { DDS_BOOLEAN_TRUE }
1499 
1500 DDSC_QOS_POLICY_METHODS_DECL(DDS_EntityFactoryQosPolicy);
1501 
1502 /* ----------------------------------------------------------------- */
1503 /* EXTENDED QOS SUPPORT */
1504 /* ----------------------------------------------------------------- */
1505 
1506 /* ----------------------------------------------------------------- */
1507 /*e
1508  * \dref_ExtendedQosSupportGroupDocs
1509  */
1510 #define DDS_LENGTH_UNLIMITED (-1)
1511 
1512 #define DDS_LENGTH_AUTO (-2)
1513 
1514 /* ----------------------------------------------------------------- */
1515 
1516 /* ----------------------------------------------------------------- */
1517 /* TYPESUPPORT */
1518 /* ----------------------------------------------------------------- */
1519 /*i \dref_TypeSupportQosGroupDocs
1520 */
1521 
1522 /*i \dref_TYPESUPPORT_QOS_POLICY_NAME
1523  */
1524 extern DDSCDllVariable const char *const DDS_TYPESUPPORT_QOS_POLICY_NAME;
1525 
1526 /* ----------------------------------------------------------------- */
1527 /*i \dref_TypeSupportQosPolicy
1528  */
1529 struct DDSCPPDllExport DDS_TypeSupportQosPolicy
1530 {
1531  /*e \dref_TypeSupportQosPolicy_plugin_data
1532  */
1533  void *plugin_data;
1534 
1535  DDSC_CPP_QOS_POLICY_METHODS(DDS_TypeSupportQosPolicy)
1536 };
1537 
1538 /*i \dref_TypeSupportQosPolicy_DEFAULT
1539  */
1540 #define DDS_TYPESUPPORT_QOS_POLICY_DEFAULT \
1541 { NULL }
1542 
1543 DDSC_QOS_POLICY_METHODS_DECL(DDS_TypeSupportQosPolicy)
1544 
1545 /* ----------------------------------------------------------------- */
1546 /* SYSTEM_RESOURCE_LIMITS_X (eXtension QoS) */
1547 /* ----------------------------------------------------------------- */
1548 /*e \dref_SystemResourceLimitsQosGroupDocs
1549  */
1550 
1551 /*e \dref_SYSTEMRESOURCELIMITS_QOS_POLICY_NAME
1552  */
1553 extern DDSCDllVariable const char *const DDS_SYSTEMRESOURCELIMITS_QOS_POLICY_NAME;
1554 
1555 /* ----------------------------------------------------------------- */
1556 
1557 /*e \dref_SystemResourceLimitsQosPolicy
1558  */
1560 {
1561  /*e \dref_SystemResourceLimitsQosPolicy_max_participants
1562  */
1564 
1565  /*e \dref_SystemResourceLimitsQosPolicy_max_components
1566  */
1568 
1569  DDSC_CPP_QOS_POLICY_METHODS(DDS_SystemResourceLimitsQosPolicy)
1570 };
1571 
1572 /*i \dref_SystemResourceLimitsQosPolicy_DEFAULT
1573  */
1574 #define DDS_SYSTEM_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { 1L,16L }
1575 
1576 DDSC_QOS_POLICY_METHODS_DECL(DDS_SystemResourceLimitsQosPolicy)
1577 
1578 /* ----------------------------------------------------------------- */
1579 /* WIRE_PROTOCOL_X (eXtension QoS) */
1580 /* ----------------------------------------------------------------- */
1581 /*e \dref_WireProtocolQosGroupDocs
1582  */
1583 
1584 #define DDS_RtpsWellKnownPorts NETIO_RtpsPortParam
1585 
1586 /*e \dref_RTI_BACKWARDS_COMPATIBLE_RTPS_WELL_KNOWN_PORTS
1587  */
1588 extern DDSCDllVariable struct DDS_RtpsWellKnownPorts_t
1590 
1591 /*e \dref_INTEROPERABLE_RTPS_WELL_KNOWN_PORTS
1592  */
1593 extern DDSCDllVariable struct DDS_RtpsWellKnownPorts_t
1595 
1596 /*i @ingroup DDSWireProtocolQosModule
1597  these defaults are compatible with >= 4.2d
1598  */
1599 
1600 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1601 /*e \dref_RtpsWellKnownPorts_t
1602  */
1604 {
1605  /*e \dref_RtpsWellKnownPorts_t_port_base
1606  */
1608 
1609  /*e \dref_RtpsWellKnownPorts_t_domain_id_gain
1610  */
1612 
1613  /*e \dref_RtpsWellKnownPorts_t_participant_id_gain
1614  */
1616 
1617  /*e \dref_RtpsWellKnownPorts_t_builtin_multicast_port_offset
1618  */
1620 
1621  /*e \dref_RtpsWellKnownPorts_t_builtin_unicast_port_offset
1622  */
1624 
1625  /*e \dref_RtpsWellKnownPorts_t_user_multicast_port_offset
1626  */
1628 
1629  /*e \dref_RtpsWellKnownPorts_t_user_unicast_port_offset
1630  */
1632 };
1633 
1634 #endif /* DOXYGEN_DOCUMENTATION_ONLY */
1635 
1636 #define DDS_RtpsWellKnownPorts_t DDS_RtpsWellKnownPorts
1637 
1638 /*i \dref_RtpsWellKnownPorts_DEFAULT
1639  */
1640 #define DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT \
1641 { \
1642  7400, /* port_base */ \
1643  250, /* domain_id_gain */ \
1644  2, /* participant_id_gain */ \
1645  0, /* builtin_multicast_port_offset */ \
1646  10, /* builtin_unicast_port_offset */ \
1647  1, /* user_multicast_port_offset */ \
1648  11 /* user_unicast_port_offset */ \
1649 }
1650 
1651 /*e \dref_WIREPROTOCOL_QOS_POLICY_NAME
1652  */
1653 extern DDSCDllVariable const char *const DDS_WIREPROTOCOL_QOS_POLICY_NAME;
1654 
1655 /* ----------------------------------------------------------------- */
1656 /*e \dref_WireProtocolQosPolicy
1657  */
1658 struct DDSCPPDllExport DDS_WireProtocolQosPolicy
1659 {
1660  /*e \dref_WireProtocolQosPolicy_participant_id
1661  */
1663 
1664  /*e \dref_WireProtocolQosPolicy_rtps_host_id
1665  */
1667 
1668  /*e \dref_WireProtocolQosPolicy_rtps_app_id
1669  */
1671 
1672  /*e \dref_WireProtocolQosPolicy_rtps_instance_id
1673  */
1675 
1676  /*e \dref_WireProtocolQosPolicy_rtps_well_known_ports
1677  */
1678  struct DDS_RtpsWellKnownPorts_t rtps_well_known_ports;
1679 
1680  DDSC_CPP_QOS_POLICY_METHODS(DDS_WireProtocolQosPolicy)
1681 };
1682 
1683 /*e
1684  */
1685 enum
1686 {
1687  /*e \dref_WireProtocolQosPolicy_RTPS_AUTO_ID
1688  */
1690 };
1691 
1692 /*i \dref_WireProtocolQosPolicy_DEFAULT
1693  */
1694 #define DDS_WIRE_PROTOCOL_QOS_POLICY_DEFAULT { \
1695 -1 /* auto participant_id */, \
1696 DDS_RTPS_AUTO_ID /* rtps_host_id */, \
1697 DDS_RTPS_AUTO_ID /* rtps_app_id */, \
1698 DDS_RTPS_AUTO_ID /* rtps_instance_id */, \
1699 DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT /* rtps_well_known_ports */\
1700 }
1701 
1702 DDSC_QOS_POLICY_METHODS_DECL(DDS_WireProtocolQosPolicy)
1703 
1704 /* ----------------------------------------------------------------- */
1705 
1706 /*i
1707  * Alias for DDS_Locator
1708  */
1709 #define DDS_Locator RTPS_Locator
1710 
1711 /*i
1712  * Alias for DDS_Locator_t
1713  */
1714 #define DDS_Locator_t RTPS_Locator_t
1715 
1716 /*i
1717  * Alias for DDS_LocatorUdpv4_t
1718  */
1719 #define DDS_LocatorUdpv4_t RTPS_LocatorUdpv4_t
1720 
1721 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1722 
1723 /*e \dref_Locator_t
1724  */
1726 {
1727  /*e \dref_Locator_t_kind
1728  */
1730 
1731  /*e \dref_Locator_t_port
1732  */
1734 
1735  /*e \dref_Locator_t_address
1736  */
1737  DDS_Octet address[RTPS_LOCATOR_ADDRESS_LENGTH_MAX];
1738 };
1739 
1740 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1741 
1742 #define T struct RTPS_Locator
1743 #define TSeq DDS_LocatorSeq
1744 #define REDA_SEQUENCE_USER_API
1745 #define TSeq_is_equal
1746 #include <reda/reda_sequence_decl.h>
1747 
1748 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1749 /*e \dref_LocatorSeq
1750  */
1751 struct DDS_LocatorSeq {};
1752 #endif
1753 
1754 /*e
1755  * \dref_Locator_t_INVALID
1756  */
1757 #define DDS_LOCATOR_INVALID RTPS_LOCATOR_INVALID
1758 
1759 #ifndef RTI_CERT
1760 /*e
1761  * \dref_Locator_t_DEFAULT
1762  */
1763 #define DDS_LOCATOR_DEFAULT RTPS_LOCATOR_DEFAULT
1764 
1765 /*e
1766  * \dref_Locator_t_KIND_INVALID
1767  */
1768 #define DDS_LOCATOR_KIND_INVALID RTPS_LOCATOR_KIND_INVALID
1769 
1770 /*e
1771  * \dref_Locator_t_PORT_INVALID
1772  */
1773 #define DDS_LOCATOR_PORT_INVALID RTPS_LOCATOR_PORT_INVALID
1774 
1775 /*e
1776  * \dref_Locator_t_ADDRESS_INVALID
1777  */
1778 #define DDS_LOCATOR_ADDRESS_INVALID RTPS_LOCATOR_ADDRESS_INVALID
1779 
1780 #endif /* !RTI_CERT */
1781 
1782 
1783 /*e
1784  * \dref_Locator_t_KIND_UDPv4
1785  */
1786 #define DDS_LOCATOR_KIND_UDPv4 RTPS_LOCATOR_KIND_UDPv4
1787 
1788 /*e
1789  * \dref_Locator_t_KIND_UDPv6
1790  */
1791 #define DDS_LOCATOR_KIND_UDPv6 RTPS_LOCATOR_KIND_UDPv6
1792 
1793 /*e
1794  * \dref_Locator_t_KIND_RESERVED
1795  */
1796 #define DDS_LOCATOR_KIND_RESERVED RTPS_LOCATOR_KIND_RESERVED
1797 
1798 /*e
1799  * \dref_Locator_t_KIND_SHMEM
1800  */
1801 #define DDS_LOCATOR_KIND_SHMEM RTPS_LOCATOR_KIND_SHMEM
1802 
1803 /* ----------------------------------------------------------------- */
1804 
1805 /*e \dref_ProtocolVersion_t
1806  */
1807 typedef struct DDS_ProtocolVersion
1808 {
1809  /*e \dref_ProtocolVersion_t_major
1810  */
1812 
1813  /*e \dref_ProtocolVersion_t_minor
1814  */
1817 
1818 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(DDS_ProtocolVersion);
1819 
1820 /*i \dref_ProtocolVersion_DEFAULT
1821  */
1822 #define DDS_PROTOCOL_VERSION_DEFAULT { 0, 0 }
1823 
1824 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_1_0
1825  */
1826 #define DDS_PROTOCOLVERSION_1_0 { 1, 0 }
1827 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_1_1
1828  */
1829 #define DDS_PROTOCOLVERSION_1_1 { 1, 1 }
1830 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_1_2
1831  */
1832 #define DDS_PROTOCOLVERSION_1_2 { 1, 2 }
1833 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION
1834  */
1835 #define DDS_PROTOCOLVERSION_2_0 { 2, 0 }
1836 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION_2_1
1837  */
1838 #define DDS_PROTOCOLVERSION_2_1 { 2, 1 }
1839 /*e \dref_ProtocolVersion_t_PROTOCOLVERSION
1840  */
1841 #define DDS_PROTOCOLVERSION { 2, 1 }
1842 
1843 /*e \dref_VendorId_t_LENGTH_MAX
1844  */
1845 #define DDS_VENDOR_ID_LENGTH_MAX 2
1846 
1847 /*e \dref_VendorId_t
1848  */
1850 {
1851  /*e \dref_VendorId_t_vendorId
1852  */
1854 };
1855 
1856 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1857 /*e \dref_VendorId_t
1858  */
1860 {
1861  /*e \dref_VendorId_t_vendorId
1862  */
1864 };
1865 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1866 
1867 
1868 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(DDS_VendorId);
1869 #define DDS_VendorId_t DDS_VendorId
1870 
1871 /*i \dref_VendorId_dEFAULT
1872  */
1873 #define DDS_VENDOR_ID_DEFAULT { {0, 0} }
1874 
1875 /*i \dref_VendorId_t_VENDORID_UNKNOWN
1876  */
1877 #define DDS_VENDORID_UNKNOWN { {0, 0} }
1878 
1879 /* ----------------------------------------------------------------- */
1880 
1881 /*e \dref_ProductVersion_t
1882  */
1884 {
1885  /*e \dref_ProductVersion_t_major
1886  */
1888 
1889  /*e \dref_ProductVersion_t_minor
1890  */
1892 
1893  /*e \dref_ProductVersion_t_release
1894  */
1896 
1897  /*e \dref_ProductVersion_t_revision
1898  */
1900 };
1901 
1902 
1903 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1904 /*e \dref_ProductVersion_t
1905  */
1907 {
1908  /*e \dref_ProductVersion_t_major
1909  */
1911  /*e \dref_ProductVersion_t_minor
1912  */
1914  /*e \dref_ProductVersion_t_release
1915  */
1917  /*e \dref_ProductVersion_t_revision
1918  */
1920 };
1921 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
1922 
1923 #define DDS_ProductVersion_t DDS_ProductVersion
1924 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(DDS_ProductVersion);
1925 
1926 /*e \dref_ProductVersion_t_UNKNOWN
1927  */
1928 #define DDS_PRODUCTVERSION_UNKNOWN { 0, 0, '0', 0 }
1929 
1930 /*i \dref_ProductVersion_DEFAULT
1931  */
1932 #define DDS_PRODUCTVERSION_DEFAULT { 2, 0, 'c', 1 }
1933 
1934 
1935 /* ----------------------------------------------------------------- */
1936 /* DATA_READER_PROTOCOL_X (eXtension QoS) */
1937 /* ----------------------------------------------------------------- */
1938 /*e \dref_DataReaderProtocolQosGroupDocs
1939  */
1940 
1941 /*e \dref_DATAREADERPROTOCOL_QOS_POLICY_NAME
1942  */
1943 extern DDSCDllVariable const char *const DDS_DATAREADERPROTOCOL_QOS_POLICY_NAME;
1944 
1945 /* ----------------------------------------------------------------- */
1946 /*e \dref_DataReaderProtocolQosPolicy
1947  */
1948 struct DDSCPPDllExport DDS_DataReaderProtocolQosPolicy
1949 {
1950  /*e \dref_DataReaderProtocolQosPolicy_rtps_object_id
1951  */
1953 
1954  DDSC_CPP_QOS_POLICY_METHODS(DDS_DataReaderProtocolQosPolicy)
1955 };
1956 
1957 /*i \dref_DataReaderProtocolQosPolicy_DEFAULT
1958  */
1959 #define DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT \
1960 { \
1961  DDS_RTPS_AUTO_ID \
1962 }
1963 
1964 DDSC_QOS_POLICY_METHODS_DECL(DDS_DataReaderProtocolQosPolicy)
1965 
1966 /* ----------------------------------------------------------------- */
1967 
1968 /*e \dref_RtpsReliableWriterProtocol_t
1969  */
1971  {
1972  /*e \dref_RtpsReliableWriterProtocol_t_heartbeat_period
1973  */
1974  struct DDS_Duration_t heartbeat_period;
1975 
1976  /*e \dref_RtpsReliableWriterProtocol_t_heartbeats_per_max_samples
1977  */
1979 
1980  /*e \dref_RtpsReliableWriterProtocol_t_max_send_window
1981  */
1983 
1984  /*e \dref_RtpsReliableWriterProtocol_t_max_heartbeat_retries
1985  */
1987 
1988  /*i \dref_RtpsReliableWriterProtocol_t_first_write_sequence_number
1989  */
1990  struct DDS_SequenceNumber_t first_write_sequence_number;
1991  };
1992 
1993 #define DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW (DDS_LENGTH_UNLIMITED)
1994 
1995 /*i \dref_RtpsReliableWriterProtocol_DEFAULT
1996  */
1997 #define DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT { \
1998  {3,0}, /* hb_period */ \
1999  1, /* hb_per_max_samples */ \
2000  DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW, /* max_send_window */ \
2001  DDS_LENGTH_UNLIMITED, /* max_heartbeat_retries */ \
2002  {0,1} /* first_write_sequence_number */\
2003 }
2004 
2005 /* ----------------------------------------------------------------- */
2006 /* DATA_WRITER_PROTOCOL_X (eXtension QoS) */
2007 /* ----------------------------------------------------------------- */
2008 /*e \dref_DataWriterProtocolQosGroupDocs
2009  */
2010 
2011 /*e \dref_DATAWRITERPROTOCOL_QOS_POLICY_NAME
2012  */
2013 extern DDSCDllVariable const char *const DDS_DATAWRITERPROTOCOL_QOS_POLICY_NAME;
2014 
2015 /* ----------------------------------------------------------------- */
2016 /*e \dref_DataWriterProtocolQosPolicy
2017  */
2018 struct DDSCPPDllExport DDS_DataWriterProtocolQosPolicy
2019 {
2020  /*e \dref_DataWriterProtocolQosPolicy_rtps_object_id
2021  */
2023 
2024  /*e \dref_DataWriterProtocolQosPolicy_rtps_reliable_writer
2025  */
2026  struct DDS_RtpsReliableWriterProtocol_t rtps_reliable_writer;
2027 
2028  /*e \dref_DataWriterProtocolQosPolicy_serialize_on_write
2029  */
2031 
2032  DDSC_CPP_QOS_POLICY_METHODS(DDS_DataWriterProtocolQosPolicy)
2033 };
2034 
2035 /*i \dref_DataWriterProtocolQosPolicy_DEFAULT
2036  */
2037 #define DDS_DATA_WRITER_PROTOCOL_QOS_POLICY_DEFAULT \
2038 { DDS_RTPS_AUTO_ID, \
2039  DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT,\
2040  RTI_TRUE \
2041 }
2042 
2043 DDSC_QOS_POLICY_METHODS_DECL(DDS_DataWriterProtocolQosPolicy)
2044 
2045 /* ----------------------------------------------------------------- */
2046 /* TRANSPORT_QOS_POLICY (eXtension QoS) */
2047 /* ----------------------------------------------------------------- */
2048 /*e \dref_TransportQosGroupDocs
2049  */
2050 
2051 /*e \dref_TRANSPORT_QOS_POLICY_NAME
2052  */
2053 extern DDSCDllVariable const char *const DDS_TRANSPORT_QOS_POLICY_NAME;
2054 
2055 /* ----------------------------------------------------------------- */
2056 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2057 /*i \dref_StringSeq
2058  */
2059 struct DDS_StringSeq {};
2060 #endif
2061 
2062 
2063 /*e \dref_TransportQosPolicy
2064  */
2065 struct DDSCPPDllExport DDS_TransportQosPolicy
2066 {
2067  /*e \dref_TransportQosPolicy_enabled_transports
2068  */
2069  struct DDS_StringSeq enabled_transports;
2070 
2071  DDSC_CPP_QOS_POLICY_METHODS(DDS_TransportQosPolicy)
2072 };
2073 
2074 /*i \dref_TransportQosPolicy_DEFAULT
2075  */
2076 #define DDS_TRANSPORT_QOS_POLICY_DEFAULT \
2077 {\
2078  DDS_SEQUENCE_INITIALIZER \
2079 }
2080 
2081 DDSC_QOS_POLICY_METHODS_DECL(DDS_TransportQosPolicy)
2082 
2083 /* ----------------------------------------------------------------- */
2084 /* DOMAIN_PARTICIPANT_RESOURCE_LIMITS_X (eXtension QoS) */
2085 /* ----------------------------------------------------------------- */
2086 /*e \dref_DomainParticipantResourceLimitsQosGroupDocs
2087  */
2088 
2089 /*e \dref_DOMAINPARTICIPANTRESOURCELIMITS_QOS_POLICY_NAME
2090  */
2091 extern DDSCDllVariable const char *const
2093 
2094 /* ----------------------------------------------------------------- */
2095 
2096 /*e \dref_DomainParticipantResourceLimitsQosPolicy
2097  */
2099 {
2100  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_writer_allocation
2101  */
2103 
2104  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_reader_allocation
2105  */
2107 
2108  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_publisher_allocation
2109  */
2111 
2112  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_subscriber_allocation
2113  */
2115 
2116  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_topic_allocation
2117  */
2119 
2120  /*e \dref_DomainParticipantResourceLimitsQosPolicy_local_type_allocation
2121  */
2123 
2124  /*e \dref_DomainParticipantResourceLimitsQosPolicy_remote_participant_allocation
2125  */
2127 
2128  /*e \dref_DomainParticipantResourceLimitsQosPolicy_remote_writer_allocation
2129  */
2131 
2132  /*e \dref_DomainParticipantResourceLimitsQosPolicy_remote_reader_allocation
2133  */
2135 
2136  /*e \dref_DomainParticipantResourceLimitsQosPolicy_matching_writer_reader_pair_allocation
2137  */
2139 
2140  /*e \dref_DomainParticipantResourceLimitsQosPolicy_matching_reader_writer_pair_allocation
2141  */
2143 
2144  /*e \dref_DomainParticipantResourceLimitsQosPolicy_max_receive_ports
2145  */
2147 
2148  /*e \dref_DomainParticipantResourceLimitsQosPolicy_max_destination_ports
2149  */
2151 
2152  DDSC_CPP_QOS_POLICY_METHODS(DDS_DomainParticipantResourceLimitsQosPolicy)
2153 };
2154 
2155 /*i @ingroup DDSDomainParticipantResourceLimitsQosModule
2156  *
2157  * This constant is used below in
2158  * DDS_DOMAIN_PARTICIPANT_RESOURCE_LIMITS_QOS_POLICY_DEFAULT; other types
2159  * should not use it alone.
2160  */
2161 #define DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT (32L)
2162 
2163 
2164 /*i @ingroup DDSDomainParticipantResourceLimitsQosModule
2165  *
2166  * Several fields in this structure are actually never used. These fields
2167  * should be explicitly initialized when this structure is copied
2168  * from a lower layer structure to prevent the values from being left in
2169  * an uninitialized state. The unused fields include:
2170  *
2171  * - local_publisher_allocation.max_count
2172  * - local_subscriber_allocation.max_count
2173  * - local_topic_allocation.max_count
2174  * - matching_writer_reader_pair_allocation.initial_count
2175  * - matching_writer_reader_pair_allocation.max_count
2176  * - matching_reader_writer_pair_allocation.initial_count
2177  * - matching_reader_writer_pair_allocation.max_count
2178  */
2179 /*i \dref_DomainParticipantReasourceLimitsQosPolicy_DEFAULT
2180  */
2181 #define DDS_DOMAIN_PARTICIPANT_RESOURCE_LIMITS_QOS_POLICY_DEFAULT \
2182 {1L, /*local_writer_allocation*/ \
2183  1L, /*local_reader_allocation*/ \
2184  1L, /*local_publisher_allocation*/ \
2185  1L, /*local_subscriber_allocation*/ \
2186  1L, /*local_topic_allocation*/ \
2187  1L, /*local_type_allocation*/ \
2188  1L, /*remote_participant_allocation*/ \
2189  1L, /*remote_writer_allocation*/ \
2190  1L, /*remote_reader_allocation*/ \
2191  DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
2192  DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
2193  8L,\
2194  8L \
2195 }
2196 
2197 DDSC_QOS_POLICY_METHODS_DECL(DDS_DomainParticipantResourceLimitsQosPolicy)
2198 
2199 /* ----------------------------------------------------------------- */
2200 
2201 /*i \dref_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH
2202  */
2203 #define DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH (4)
2204 
2205 /*e \dref_BuiltinTopicKey_t
2206  */
2208 {
2209  /*e \dref_BuiltinTopicKey_t_value
2210  */
2211  DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE value[DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH];
2213 
2214 /*i @ingroup BuiltinTopicGroupDocs
2215  */
2216 #define DDS_BuiltinTopicKey_t_INITIALIZER { {0, 0, 0, 0} }
2217 
2218 /*e \dref_BuiltinTopicKey_t_AUTO
2219  */
2220 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_AUTO;
2221 
2222 /*e \dref_BuiltinTopicKey_t_UNKNOWN
2223  */
2224 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_UNKNOWN;
2225 
2226 /*i \dref_BuiltinTopicKey_t_PREFIX_UNKNOWN
2227  */
2228 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_PREFIX_UNKNOWN;
2229 
2230 /*i \dref_BuiltinTopicKey_t_PREFIX_UNKNOWN
2231  */
2232 extern DDSCDllVariable const struct DDS_BuiltinTopicKey_t DDS_BUILTINTOPICKEY_PREFIX_AUTO;
2233 
2234 /*i \ingroup BuiltinTopicGroupDocs_equals
2235 */
2236 DDSCDllExport DDS_Boolean
2237 DDS_BuiltinTopicKey_equals(const DDS_BuiltinTopicKey_t *a,
2238  const DDS_BuiltinTopicKey_t *b);
2239 
2240 /*i \ingroup BuiltinTopicGroupDocs_prefix_equals
2241  */
2242 DDSCDllExport DDS_Boolean
2243 DDS_BuiltinTopicKey_prefix_equals(const DDS_BuiltinTopicKey_t *a,
2244  const DDS_BuiltinTopicKey_t *b);
2245 
2246 /*i \ingroup BuiltinTopicGroupDocs_suffix_equals
2247  */
2248 DDSCDllExport DDS_Boolean
2249 DDS_BuiltinTopicKey_suffix_equals(const DDS_BuiltinTopicKey_t *a,
2250  const DDS_BuiltinTopicKey_t *b);
2251 
2252 /*i \ingroup BuiltinTopicGroupDocs_copy_prefix
2253  */
2254 DDSCDllExport void
2255 DDS_BuiltinTopicKey_copy_prefix(DDS_BuiltinTopicKey_t *a,
2256  const DDS_BuiltinTopicKey_t *b);
2257 
2258 /*i \ingroup BuiltinTopicGroupDocs_copy_suffix
2259  */
2260 DDSCDllExport void
2261 DDS_BuiltinTopicKey_copy_suffix(DDS_BuiltinTopicKey_t *a,
2262  const DDS_BuiltinTopicKey_t *b);
2263 
2264 /*i \ingroup BuiltinTopicGroupDocs_from_guid
2265  */
2266 DDSCDllExport void
2267 DDS_BuiltinTopicKey_from_guid(DDS_BuiltinTopicKey_t *in,
2268  const DDS_InstanceHandle_t *out);
2269 /*ci
2270  * \brief Compare two DDS_BuiltinTopicKey_t structure for ordering
2271  *
2272  * \param[in] left Left side of comparison
2273  * \param[in] right Right side of comparison
2274  *
2275  * \return positive integer if left is greater than right,
2276  * negative integer if left is less than right,
2277  * zero if left is equal to right
2278  */
2279 DDSCDllExport DDS_Long
2280 DDS_BuiltinTopicKey_compare(const DDS_BuiltinTopicKey_t *left,
2281  const DDS_BuiltinTopicKey_t *right);
2282 
2283 /* ================================================================= */
2284 /* Condition and Waitsets */
2285 /* ================================================================= */
2286 
2287 /*ce \dref_Entity
2288  */
2289 typedef struct DDS_EntityImpl DDS_Entity;
2290 
2291 /* ----------------------------------------------------------------- */
2292 /*e \dref_ConditionsAndWaitsetsModuleDocs
2293  */
2294 
2295 /*ce \dref_Condition
2296  */
2297 typedef struct DDS_ConditionImpl DDS_Condition;
2298 
2299 /*ci @ingroup DDSConditionsModule
2300  @brief Pointer to DDS_Condition.
2301  */
2302 typedef struct DDS_ConditionImpl *DDS_Condition_ptr;
2303 
2304 /*ce \dref_ConditionSeq
2305  */
2306 #define T struct DDS_ConditionImpl*
2307 #ifndef RTI_CERT
2308 #define TSeq_ensure_length
2309 #define TSeq_has_ownership
2310 #endif
2311 #define TSeq DDS_ConditionSeq
2312 #include <reda/reda_sequence_decl.h>
2313 
2314 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2315 /*ce \dref_ConditionSeq
2316  */
2318 #endif
2319 
2320 /*ce \dref_Condition_get_trigger_value
2321  */
2322 DDSCDllExport DDS_Boolean
2324 
2325 /*i \dref_Condition_set_wrapper
2326  */
2327 DDSCDllExport void
2328 DDS_ConditionImpl_set_wrapper(DDS_Condition *self, void *wrapper);
2329 
2330 /*i \dref_Condition_get_wrapper
2331  */
2332 DDSCDllExport void**
2333 DDS_ConditionImpl_get_wrapper_ref(DDS_Condition *self);
2334 
2335 /* ----------------------------------------------------------------- */
2336 
2337 /*ce \dref_GuardCondition
2338  */
2339 typedef struct DDS_GuardConditionImpl DDS_GuardCondition;
2340 
2341 #define DDS_GuardCondition_as_condition(guard_condition_ptr_) \
2342  ((DDS_Condition*) guard_condition_ptr_)
2343 
2344 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2345 /*ce \dref_GuardCondition_as_condition
2346  */
2348 #endif /*DOXYGEN_DOCUMENTATION_ONLY*/
2349 
2350 /*ce \dref_GuardCondition_new
2351  */
2352 DDSCDllExport DDS_GuardCondition*
2354 
2355 #ifndef RTI_CERT
2356 /*ce \dref_GuardCondition_delete
2357  */
2358 DDSCDllExport DDS_ReturnCode_t
2360 #endif
2361 
2362 /*ce \dref_GuardCondition_set_trigger_value
2363  */
2364 DDSCDllExport DDS_ReturnCode_t
2366  DDS_Boolean value);
2367 
2368 /* ----------------------------------------------------------------- */
2369 
2370 /*ce \dref_StatusCondition
2371  */
2372 typedef struct DDS_StatusConditionImpl DDS_StatusCondition;
2373 
2374 #define DDS_StatusCondition_as_condition(status_cond_ptr_) \
2375  ((DDS_Condition*) status_cond_ptr_)
2376 
2377 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2378 /*ce \dref_StatusCondition_as_condition
2379  */
2381  DDS_StatusCondition *statusCondition);
2382 #endif /*DOXYGEN_DOCUMENTATION_ONLY*/
2383 
2384 
2385 /*ce \dref_StatusCondition_get_enabled_statuses
2386  */
2387 DDSCDllExport DDS_StatusMask
2389 
2390 /*ce \dref_StatusCondition_set_enabled_statuses
2391  */
2392 DDSCDllExport DDS_ReturnCode_t
2394  DDS_StatusMask mask);
2395 
2396 /*ce \dref_StatusCondition_get_entity
2397  */
2398 DDSCDllExport DDS_Entity*
2400 
2401 /*ce \dref_WaitSet
2402  */
2403 typedef struct DDS_WaitSetImpl DDS_WaitSet;
2404 
2405 /*ce \dref_WaitSet_new
2406  */
2407 DDSCDllExport DDS_WaitSet*
2408 DDS_WaitSet_new(void);
2409 
2410 /*ce \dref_WaitSet_wait
2411  */
2412 DDSCDllExport DDS_ReturnCode_t
2414  struct DDS_ConditionSeq *active_conditions,
2415  const struct DDS_Duration_t *timeout);
2416 
2417 /*ce \dref_WaitSet_attach_condition
2418  */
2419 DDSCDllExport DDS_ReturnCode_t
2421 
2422 #ifndef RTI_CERT
2423 /*ce \dref_WaitSet_delete
2424  */
2425 DDSCDllExport DDS_ReturnCode_t
2427 #endif /* !RTI_CERT */
2428 
2429 #ifndef RTI_CERT
2430 /*ce \dref_WaitSet_detach_condition
2431  */
2432 DDSCDllExport DDS_ReturnCode_t
2434 #endif /* !RTI_CERT */
2435 
2436 
2437 /*ce \dref_WaitSet_get_conditions
2438  */
2439 DDSCDllExport DDS_ReturnCode_t
2441  struct DDS_ConditionSeq *attached_conditions);
2442 
2443 /* ================================================================= */
2444 /* Listeners */
2445 /* ================================================================= */
2446 /*e \dref_EntityModuleDocs
2447  */
2448 
2449 /*ce \dref_Listener
2450  */
2452 {
2453  /*ce \dref_Listener_listener_data
2454  */
2456 };
2457 
2458 /*ce \dref_Listener_INITIALIZER
2459  */
2460 #define DDS_Listener_INITIALIZER { NULL }
2461 
2462 /* ================================================================= */
2463 /* Entity typedef */
2464 /* ================================================================= */
2465 
2466 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2467 /*ce \dref_DomainEntity
2468  */
2469 typedef struct DDS_DomainEntityImpl DDS_DomainEntity;
2470 #endif /*DOXYGEN_DOCUMENTATION_ONLY */
2471 
2472 /* ================================================================= */
2473 /* DDS_Entity */
2474 /* ================================================================= */
2475 
2476 /*ce \dref_Entity_enable
2477  */
2478 DDSCDllExport DDS_ReturnCode_t
2480 
2481 /*ce \dref_Entity_is_enabled
2482  */
2483 DDSCDllExport DDS_Boolean
2485 
2486 /*ce \dref_Entity_get_instance_handle
2487  */
2488 DDSCDllExport DDS_InstanceHandle_t
2490 
2491 /*ce \dref_Entity_get_entity_kind
2492  */
2493 DDSCDllExport DDS_EntityKind_t
2495 
2496 /*ce \dref_Entity_get_statuscondition
2497  */
2498 DDSCDllExport DDS_StatusCondition*
2500 
2501 /*ce \dref_Entity_get_status_changes
2502  */
2503 DDSCDllExport DDS_StatusMask
2505 
2506 /*ci
2507  * \brief Associate a language-dependent wrapper object with a DDS_Entity.
2508  *
2509  * \details
2510  * This operation is used to support access to the functionality of
2511  * the C implementation from other compatible programming languages, such as C++.
2512  * Implementations of the Micro API in these programming languages may use
2513  * this facility to associate objects created in their run-time environments
2514  * with DDS_Entity instances by means of this operation, and then access
2515  * them using DDS_Entity_get_wrapper, typically to support the correct
2516  * propagation of events from the C core to the wrapping programming language's
2517  * layer.
2518  *
2519  * \param[in] self a non NULL DDS_Entity
2520  * \param[in] wrapper pointer to a wrapper instance or NULL to delete an
2521  * existing association.
2522  */
2523 DDSCDllExport void
2524 DDS_Entity_set_wrapper(DDS_Entity *self, void *wrapper);
2525 
2526 /*ci
2527  * \brief Access a language-dependent wrapper object attached to the DDS_Entity.
2528  *
2529  * \long This operation is used to support access to the functionality of
2530  * the C implementation from other compatible programming languages, such as C++.
2531  * Implementations of the Micro API in these programming languages may use
2532  * this facility to associate objects created in their run-time environments
2533  * with DDS_Entity instances by means of DDS_Entity_set_wrapper, typically
2534  * to support the correct propagation of events from the C core to the wrapping
2535  * programming language's layer.
2536  *
2537  * \param[in] self a non NULL DDS_Entity
2538  *
2539  * \return a pointer to a wrapper object previously or NULL if none had been
2540  * previously set using DDS_Entity_set_wrapper.
2541  */
2542 DDSCDllExport void*
2543 DDS_Entity_get_wrapper(DDS_Entity *self);
2544 
2545 /* ----------------------------------------------------------------- */
2546 /* ENTITY_NAME */
2547 /* ----------------------------------------------------------------- */
2548 /*e \dref_EntityNameQosGroupDocs
2549  */
2550 
2551 /*e \dref_ENTITYNAME_QOS_POLICY_NAME
2552  */
2553 extern DDSCDllVariable const char *const DDS_ENTITYNAME_QOS_POLICY_NAME;
2554 
2555 /*e \dref_AUTO_NAME_ENTITY
2556  */
2557 extern DDSCDllVariable const char *const DDS_AUTO_NAME_ENTITY;
2558 
2559 /* ----------------------------------------------------------------- */
2560 /*e \dref_EntityNameQosPolicy_NAME_MAX
2561  */
2562 #define DDS_ENTITYNAME_QOS_NAME_MAX 255
2563 
2564 #ifdef RTI_WIN32
2565 #pragma warning(push)
2566 #pragma warning(disable: 4522)
2567 #endif
2568 
2569 /*e \dref_EntityNameQosPolicy
2570  */
2571 struct DDSCPPDllExport DDS_EntityNameQosPolicy
2572 {
2573  /*e \dref_EntityNameQosPolicy_name
2574  */
2576 
2577  DDSC_CPP_QOS_POLICY_METHODS(DDS_EntityNameQosPolicy)
2578 
2579 #ifdef RTI_CPP
2580 public:
2581  bool set_name(const char *const name);
2582 #ifdef RTI_CERT
2583  private:
2584 #else
2585  public:
2586 #endif
2587  DDS_EntityNameQosPolicy& operator=(const char *const name);
2588  DDS_EntityNameQosPolicy& operator=(const DDS_EntityNameQosPolicy& from);
2589  const DDS_EntityNameQosPolicy& operator=(const DDS_EntityNameQosPolicy& from) const;
2590  bool operator==(const DDS_EntityNameQosPolicy& other) const;
2591  bool operator==(const char *const name) const;
2592  bool operator!=(const DDS_EntityNameQosPolicy& other) const;
2593  bool operator!=(const char *const name) const;
2594 #endif
2595 };
2596 
2597 #ifdef RTI_WIN32
2598 #pragma warning(pop)
2599 #endif
2600 
2601 /*i \dref_EntityNameQosPolicy_DEFAULT
2602  */
2603 #define DDS_ENTITY_NAME_QOS_POLICY_DEFAULT { {'\0'} }
2604 
2605 DDSC_QOS_POLICY_METHODS_DECL(DDS_EntityNameQosPolicy)
2606 
2607 /*e \dref_EntityNameQosPolicy_set_name
2608  */
2609 DDSCDllExport DDS_Boolean
2611  const char *const name);
2612 
2613 /* ================================================================= */
2614 /* RTI_Management */
2615 /* ================================================================= */
2616 
2617 /*i \dref_ManagementQosPolicy
2618  */
2619 struct DDSCPPDllExport RTI_ManagementQosPolicy
2620 {
2621  DDS_Boolean is_hidden;
2622  DDS_Boolean is_anonymous;
2623 
2624  DDSC_CPP_QOS_POLICY_METHODS(RTI_ManagementQosPolicy)
2625 };
2626 
2627 /*i \dref_ManagementQosPolicy_DEFAULT
2628  */
2629 #define RTI_MANAGEMENT_QOS_POLICY_DEFAULT { \
2630  DDS_BOOLEAN_FALSE,\
2631  DDS_BOOLEAN_FALSE\
2632 }
2633 
2634 DDSC_QOS_POLICY_METHODS_DECL(RTI_ManagementQosPolicy)
2635 
2636 /* ================================================================= */
2637 /* DDS_DomainEntity */
2638 /* ================================================================= */
2639 
2640 /*ce \dref_DomainParticipant
2641  */
2642 typedef struct DDS_DomainParticipantImpl DDS_DomainParticipant;
2643 
2644 /* ----------------------------------------------------------------- */
2645 
2646 /* ================================================================= */
2647 /* DDSHST_History */
2648 /* ================================================================= */
2649 /*i \dref_DDSHST_ReturnCode_T
2650  */
2651 typedef enum
2652 {
2653  DDSHST_RETCODE_ERROR = -1000,
2654  DDSHST_RETCODE_NOSPACE,
2655  DDSHST_RETCODE_EXISTS,
2656  DDSHST_RETCODE_NOT_EXISTS,
2657  DDSHST_RETCODE_INVALID_PROPERTY,
2658  DDSHST_RETCODE_INVALID_ENTRY_REQUEST,
2659  DDSHST_RETCODE_SUCCESS = 0
2660 } DDSHST_ReturnCode_T;
2661 
2662 /*i \dref_ReplacePolicyKind_T
2663  */
2664 typedef enum
2665 {
2666  DDSHST_REPLACE_POLICY_KIND_OLDEST,
2667  DDSHST_REPLACE_POLICY_KIND_NONE
2668 } DDSHST_ReplacePolicyKind_T;
2669 
2670 
2671 /* ----------------------------------------------------------------- */
2672 /* WRITE_PARAMS */
2673 /* ----------------------------------------------------------------- */
2674 
2675 /*e \dref_SampleIdentity_t
2676  */
2677 struct DDSCPPDllExport DDS_SampleIdentity_t
2678 {
2679  /*e \dref_SampleIdentity_t_writer_guid */
2680  struct DDS_GUID_t writer_guid;
2681  /*e \dref_SampleIdentity_t_sequence_number */
2682  struct DDS_SequenceNumber_t sequence_number;
2683 
2684  DDSC_CPP_SUPPORT_METHODS_BASIC(DDS_SampleIdentity_t)
2685 };
2686 
2687 
2688 /*ci \dref_SampleIdentity_t
2689  */
2690 #define DDS_SAMPLE_IDENTITY_UNKNOWN \
2691 { \
2692  DDS_GUID_INITIALIZER, \
2693  DDS_SEQUENCE_NUMBER_UNKNOWN \
2694 }
2695 
2696 /*e \dref_WriteParams_t
2697  */
2698 struct DDSCPPDllExport DDS_WriteParams_t
2699 {
2700  /*i \dref_WriteParams_t_identity
2701  */
2702  struct DDS_SampleIdentity_t identity;
2703 
2704  /*i \dref_WriteParams_t_related_sample_identity
2705  */
2706  struct DDS_SampleIdentity_t related_sample_identity;
2707 
2708  /*e \dref_WriteParams_t_source_timestamp
2709  */
2710  struct DDS_Time_t source_timestamp;
2711 
2712  /*e \dref_WriteParams_t_handle
2713  */
2714  DDS_InstanceHandle_t handle;
2715 
2716  DDSC_CPP_SUPPORT_METHODS_BASIC(DDS_WriteParams_t)
2717 };
2718 
2719 /*e \dref_WriteParams_t_DEFAULT
2720  */
2721 #define DDS_WRITEPARAMS_DEFAULT \
2722 { \
2723  DDS_SAMPLE_IDENTITY_UNKNOWN, \
2724  DDS_SAMPLE_IDENTITY_UNKNOWN, \
2725  DDS_TIME_ZERO, \
2726  DDS_HANDLE_NIL_NATIVE \
2727 }
2728 
2729 /* ================================================================= */
2730 /* DDS Properties */
2731 /* ================================================================= */
2732 /* NOTE:
2733  * DDS_PropertySeq is not exposed as a general purpose property
2734  * sequence. It is only used to send required properties for RTI Tools.
2735  * Thus, although the generic sequence type is used to implement the property
2736  * sequence, its internal use is highly specialized and only a limited
2737  * number of functions are exposed.
2738  */
2739 #define DDS_PropertySeq CDR_PropertySeq
2740 #define DDS_Property CDR_Property
2741 #define DDS_PropertySeq_initialize CDR_PropertySeq_initialize
2742 #define DDS_PropertySeq_set_length CDR_PropertySeq_set_length
2743 #define DDS_PropertySeq_get_length CDR_PropertySeq_get_length
2744 #define DDS_PropertySeq_get_reference CDR_PropertySeq_get_reference
2745 
2746 /*ci
2747  * \brief Get pointer to the DDS participant properties
2748  *
2749  * \details
2750  * The DDS domain participant may send additional information as properties
2751  * in the participant announcement. Typically this is used by discovery plugins
2752  * to serialize the information.
2753  *
2754  * \param[in] self Participant to get properties for
2755  *
2756  * \return A sequence with 0 or more properties on success, NULL if no
2757  * sequence exists.
2758  */
2759 DDSCDllExport struct DDS_PropertySeq*
2760 DDS_DomainParticipant_get_dds_properties(DDS_DomainParticipant *self);
2761 
2762 
2763 /*ci
2764  * \brief Query the domain-participant if the specified locator is supported
2765  *
2766  * \param[in] self Participant to query
2767  *
2768  * \return DDS_BOOLEAN_TRUE if the locator is supported, DDS_BOOLEEAN_FALSE
2769  * otherwise.
2770  */
2771 DDSCDllExport DDS_Boolean
2772 DDS_DomainParticipant_locator_is_supported(DDS_DomainParticipant *self,
2773  struct DDS_Locator *locator);
2774 
2775 #ifdef __cplusplus
2776 } /* extern "C" */
2777 #endif
2778 
2779 #endif /* dds_c_infrastructure_h */

RTI Connext DDS Micro Version 2.4.7 Copyright © Fri Feb 26 2016 Real-Time Innovations, Inc