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

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