46 #ifndef dds_c_infrastructure_h
47 #define dds_c_infrastructure_h
52 #ifndef osapi_thread_h
61 #ifndef dds_c_common_h
64 #ifndef dds_c_string_h
67 #ifndef dds_c_sequence_h
84 #define RTI_MICRODDS_MAJOR 2
85 #define RTI_MICRODDS_MINOR 0
93 #define DDSC_CPP_QOS_POLICY_METHODS(T) \
97 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
101 DDS_ReturnCode_t copy(const T& from);\
103 T& operator=(const T& from);\
104 bool operator==(const T& other);\
105 bool operator!=(const T& other);
107 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
111 DDS_ReturnCode_t copy(const T& from);\
114 T& operator=(const T& from);\
115 bool operator==(const T& other);\
116 bool operator!=(const T& other);
120 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T) \
125 T& operator=(const T& from);\
126 bool operator==(const T& other);\
127 bool operator!=(const T& other);
129 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T) \
135 T& operator=(const T& from);\
136 bool operator==(const T& other);\
137 bool operator!=(const T& other);
141 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T)
142 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T)
143 #define DDSC_CPP_QOS_POLICY_METHODS(T)
146 #define DDSC_QOS_POLICY_METHODS_DECL(T) \
147 DDSCDllExport void T##_initialize(struct T *policy);
183 #define DDS_Time_t_greater_than(l, r) \
184 (((l).sec > (r).sec) || \
185 (((l).sec == (r).sec) && \
186 ((l).nanosec > (r).nanosec)))
188 #ifdef DOXYGEN_DOCUMENTATION_ONLY
200 #define DDS_TIME_ZERO { 0L, 0UL }
203 #define DDS_Time_is_zero(timePtr) \
204 ((timePtr)->sec == 0L || (timePtr)->nanosec == 0UL)
206 #ifdef DOXYGEN_DOCUMENTATION_ONLY
236 #define DDS_DURATION_INFINITE_SEC_INITIALIZER 0x7fffffff
240 #define DDS_DURATION_INFINITE_NSEC_INITIALIZER 0xffffffffUL
269 #define DDS_DURATION_INFINITE_INITIALIZER \
271 DDS_DURATION_INFINITE_SEC_INITIALIZER, \
272 DDS_DURATION_INFINITE_NSEC_INITIALIZER \
296 extern DDSCDllVariable
const struct DDS_Duration_t DDS_DURATION_YEAR;
300 extern DDSCDllVariable
const struct DDS_Duration_t DDS_DURATION_NANOSEC;
396 DDS_Duration_is_normalized(
const struct DDS_Duration_t *
const self);
406 #define T DDS_InstanceHandle_t
407 #define TSeq DDS_InstanceHandleSeq
408 #include <reda/reda_sequence_decl.h>
410 #ifdef DOXYGEN_DOCUMENTATION_ONLY
413 struct DDS_InstanceHandleSeq {};
431 const DDS_InstanceHandle_t *other);
433 #define DDS_InstanceHandle_is_nil(handlePtr) \
434 DDS_InstanceHandle_equals(handlePtr, &DDS_HANDLE_NIL)
436 #ifdef DOXYGEN_DOCUMENTATION_ONLY
454 DDS_InstanceHandle_from_rtps(DDS_InstanceHandle_t *
self,
455 const struct RTPS_Guid *other);
469 DDS_InstanceHandle_to_rtps(
struct RTPS_Guid *other,
470 const DDS_InstanceHandle_t *
self);
485 DDS_InstanceHandle_from_netio_address(DDS_InstanceHandle_t *
self,
486 const struct NETIO_Address *other);
499 DDS_InstanceHandle_compare(
const DDS_InstanceHandle_t *
self,
500 const DDS_InstanceHandle_t *other);
521 #define DDS_GUID_INITIALIZER {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
525 extern DDSCDllVariable
const struct DDS_GUID_t DDS_GUID_AUTO;
533 extern DDSCDllVariable
const struct DDS_GUID_t DDS_GUID_PREFIX_UNKNOWN;
537 extern DDSCDllVariable
const struct DDS_GUID_t DDS_GUID_PREFIX_AUTO;
550 DDS_GUID_to_rtps(
struct RTPS_Guid *other,
565 const struct RTPS_Guid *other);
608 #define DDS_SEQUENCE_NUMBER_UNKNOWN REDA_SEQUENCE_NUMBER_UNKNOWN
612 #define DDS_SEQUENCE_NUMBER_ZERO REDA_SEQUENCE_NUMBER_ZERO
616 #define DDS_SEQUENCE_NUMBER_MAX REDA_SEQUENCE_NUMBER_MAX
696 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(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)
706 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(T) \
708 DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
725 #define DDS_STATUS_MASK_NONE ((DDS_StatusMask) 0)
729 #define DDS_STATUS_MASK_ALL (~DDS_STATUS_MASK_NONE)
824 DDS_USERDATA_QOS_POLICY_ID = 1,
828 DDS_DURABILITY_QOS_POLICY_ID = 2,
832 DDS_PRESENTATION_QOS_POLICY_ID = 3,
840 DDS_LATENCYBUDGET_QOS_POLICY_ID = 5,
856 DDS_TIMEBASEDFILTER_QOS_POLICY_ID = 9,
860 DDS_PARTITION_QOS_POLICY_ID = 10,
868 DDS_DESTINATIONORDER_QOS_POLICY_ID = 12,
876 DDS_RESOURCELIMITS_QOS_POLICY_ID = 14,
884 DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID = 16,
888 DDS_READERDATALIFECYCLE_QOS_POLICY_ID = 17,
892 DDS_TOPICDATA_QOS_POLICY_ID = 18,
896 DDS_GROUPDATA_QOS_POLICY_ID = 19,
900 DDS_TRANSPORTPRIORITY_QOS_POLICY_ID = 20,
904 DDS_LIFESPAN_QOS_POLICY_ID = 21,
908 DDS_DURABILITYSERVICE_QOS_POLICY_ID = 22,
915 struct DDS_QosPolicyCount
926 #define T struct DDS_QosPolicyCount
927 #define TSeq DDS_QosPolicyCountSeq
928 #include <reda/reda_sequence_decl.h>
930 #ifdef DOXYGEN_DOCUMENTATION_ONLY
933 struct DDS_QosPolicyCountSeq
1017 DDS_DeadlineQosPolicy_get_sample_freq(
1036 #define DDS_DEADLINE_QOS_POLICY_DEFAULT \
1037 {DDS_DURATION_INFINITE_INITIALIZER}
1077 #define DDS_OWNERSHIP_QOS_POLICY_DEFAULT { DDS_SHARED_OWNERSHIP_QOS }
1100 DDSC_CPP_QOS_POLICY_METHODS(DDS_OwnershipStrengthQosPolicy)
1105 #define DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT { 0L }
1126 DDS_AUTOMATIC_LIVELINESS_QOS,
1130 DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
1156 #define DDS_LIVELINESS_QOS_POLICY_DEFAULT \
1158 DDS_AUTOMATIC_LIVELINESS_QOS,\
1159 DDS_DURATION_INFINITE_INITIALIZER \
1208 #define DDS_RELIABILITY_QOS_POLICY_DEFAULT \
1209 { DDS_BEST_EFFORT_RELIABILITY_QOS, \
1235 DDS_KEEP_ALL_HISTORY_QOS
1244 #define DDS_MAX_DEPTH_HISTORY_QOS (2147483647)
1264 #define DDS_HISTORY_QOS_POLICY_DEFAULT { DDS_KEEP_LAST_HISTORY_QOS, \
1294 DDS_TRANSIENT_DURABILITY_QOS,
1298 DDS_PERSISTENT_DURABILITY_QOS
1315 #define DDS_DURABILITY_QOS_POLICY_DEFAULT \
1316 { DDS_VOLATILE_DURABILITY_QOS }
1355 DDSC_CPP_QOS_POLICY_METHODS(DDS_ResourceLimitsQosPolicy)
1360 #define DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1390 extern DDSCDllVariable
const char *
const
1427 #define DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1432 DDS_NO_INSTANCE_REPLACEMENT_QOS, \
1446 extern DDSCDllVariable const
char *const
1462 DDSC_CPP_QOS_POLICY_METHODS(DDS_DataWriterResourceLimitsQosPolicy)
1467 #define DDS_DATAWRITERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1493 DDSC_CPP_QOS_POLICY_METHODS(DDS_EntityFactoryQosPolicy)
1498 #define DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT { DDS_BOOLEAN_TRUE }
1510 #define DDS_LENGTH_UNLIMITED (-1)
1512 #define DDS_LENGTH_AUTO (-2)
1524 extern DDSCDllVariable
const char *
const DDS_TYPESUPPORT_QOS_POLICY_NAME;
1529 struct DDSCPPDllExport DDS_TypeSupportQosPolicy
1535 DDSC_CPP_QOS_POLICY_METHODS(DDS_TypeSupportQosPolicy)
1540 #define DDS_TYPESUPPORT_QOS_POLICY_DEFAULT \
1543 DDSC_QOS_POLICY_METHODS_DECL(DDS_TypeSupportQosPolicy)
1569 DDSC_CPP_QOS_POLICY_METHODS(DDS_SystemResourceLimitsQosPolicy)
1574 #define DDS_SYSTEM_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { 1L,16L }
1584 #define DDS_RtpsWellKnownPorts NETIO_RtpsPortParam
1600 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1636 #define DDS_RtpsWellKnownPorts_t DDS_RtpsWellKnownPorts
1640 #define DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT \
1694 #define DDS_WIRE_PROTOCOL_QOS_POLICY_DEFAULT { \
1696 DDS_RTPS_AUTO_ID , \
1697 DDS_RTPS_AUTO_ID , \
1698 DDS_RTPS_AUTO_ID , \
1699 DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT \
1709 #define DDS_Locator RTPS_Locator
1714 #define DDS_Locator_t RTPS_Locator_t
1719 #define DDS_LocatorUdpv4_t RTPS_LocatorUdpv4_t
1721 #ifdef DOXYGEN_DOCUMENTATION_ONLY
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>
1748 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1757 #define DDS_LOCATOR_INVALID RTPS_LOCATOR_INVALID
1763 #define DDS_LOCATOR_DEFAULT RTPS_LOCATOR_DEFAULT
1768 #define DDS_LOCATOR_KIND_INVALID RTPS_LOCATOR_KIND_INVALID
1773 #define DDS_LOCATOR_PORT_INVALID RTPS_LOCATOR_PORT_INVALID
1778 #define DDS_LOCATOR_ADDRESS_INVALID RTPS_LOCATOR_ADDRESS_INVALID
1786 #define DDS_LOCATOR_KIND_UDPv4 RTPS_LOCATOR_KIND_UDPv4
1791 #define DDS_LOCATOR_KIND_UDPv6 RTPS_LOCATOR_KIND_UDPv6
1796 #define DDS_LOCATOR_KIND_RESERVED RTPS_LOCATOR_KIND_RESERVED
1801 #define DDS_LOCATOR_KIND_SHMEM RTPS_LOCATOR_KIND_SHMEM
1822 #define DDS_PROTOCOL_VERSION_DEFAULT { 0, 0 }
1826 #define DDS_PROTOCOLVERSION_1_0 { 1, 0 }
1829 #define DDS_PROTOCOLVERSION_1_1 { 1, 1 }
1832 #define DDS_PROTOCOLVERSION_1_2 { 1, 2 }
1835 #define DDS_PROTOCOLVERSION_2_0 { 2, 0 }
1838 #define DDS_PROTOCOLVERSION_2_1 { 2, 1 }
1841 #define DDS_PROTOCOLVERSION { 2, 1 }
1845 #define DDS_VENDOR_ID_LENGTH_MAX 2
1856 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1868 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(
DDS_VendorId);
1869 #define DDS_VendorId_t DDS_VendorId
1873 #define DDS_VENDOR_ID_DEFAULT { {0, 0} }
1877 #define DDS_VENDORID_UNKNOWN { {0, 0} }
1903 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1923 #define DDS_ProductVersion_t DDS_ProductVersion
1928 #define DDS_PRODUCTVERSION_UNKNOWN { 0, 0, '0', 0 }
1932 #define DDS_PRODUCTVERSION_DEFAULT { 2, 0, 'c', 1 }
1959 #define DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT \
1993 #define DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW (DDS_LENGTH_UNLIMITED)
1997 #define DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT { \
2000 DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW, \
2001 DDS_LENGTH_UNLIMITED, \
2037 #define DDS_DATA_WRITER_PROTOCOL_QOS_POLICY_DEFAULT \
2038 { DDS_RTPS_AUTO_ID, \
2039 DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT,\
2056 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2059 struct DDS_StringSeq {};
2069 struct DDS_StringSeq enabled_transports;
2076 #define DDS_TRANSPORT_QOS_POLICY_DEFAULT \
2078 DDS_SEQUENCE_INITIALIZER \
2091 extern DDSCDllVariable const
char *const
2152 DDSC_CPP_QOS_POLICY_METHODS(DDS_DomainParticipantResourceLimitsQosPolicy)
2161 #define DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT (32L)
2181 #define DDS_DOMAIN_PARTICIPANT_RESOURCE_LIMITS_QOS_POLICY_DEFAULT \
2191 DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
2192 DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
2203 #define DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH (4)
2211 DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE
value[DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH];
2216 #define DDS_BuiltinTopicKey_t_INITIALIZER { {0, 0, 0, 0} }
2268 const DDS_InstanceHandle_t *out);
2302 typedef struct DDS_ConditionImpl *DDS_Condition_ptr;
2306 #define T struct DDS_ConditionImpl*
2308 #define TSeq_ensure_length
2309 #define TSeq_has_ownership
2311 #define TSeq DDS_ConditionSeq
2312 #include <reda/reda_sequence_decl.h>
2314 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2328 DDS_ConditionImpl_set_wrapper(
DDS_Condition *
self,
void *wrapper);
2332 DDSCDllExport
void**
2341 #define DDS_GuardCondition_as_condition(guard_condition_ptr_) \
2342 ((DDS_Condition*) guard_condition_ptr_)
2344 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2374 #define DDS_StatusCondition_as_condition(status_cond_ptr_) \
2375 ((DDS_Condition*) status_cond_ptr_)
2377 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2387 DDSCDllExport DDS_StatusMask
2394 DDS_StatusMask mask);
2460 #define DDS_Listener_INITIALIZER { NULL }
2466 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2488 DDSCDllExport DDS_InstanceHandle_t
2503 DDSCDllExport DDS_StatusMask
2524 DDS_Entity_set_wrapper(
DDS_Entity *
self,
void *wrapper);
2562 #define DDS_ENTITYNAME_QOS_NAME_MAX 255
2565 #pragma warning(push)
2566 #pragma warning(disable: 4522)
2581 bool set_name(
const char *
const name);
2591 bool operator==(
const char *
const name)
const;
2593 bool operator!=(
const char *
const name)
const;
2598 #pragma warning(pop)
2603 #define DDS_ENTITY_NAME_QOS_POLICY_DEFAULT { {'\0'} }
2611 const
char *const name);
2619 struct DDSCPPDllExport RTI_ManagementQosPolicy
2624 DDSC_CPP_QOS_POLICY_METHODS(RTI_ManagementQosPolicy)
2629 #define RTI_MANAGEMENT_QOS_POLICY_DEFAULT { \
2634 DDSC_QOS_POLICY_METHODS_DECL(RTI_ManagementQosPolicy)
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;
2666 DDSHST_REPLACE_POLICY_KIND_OLDEST,
2667 DDSHST_REPLACE_POLICY_KIND_NONE
2668 } DDSHST_ReplacePolicyKind_T;
2690 #define DDS_SAMPLE_IDENTITY_UNKNOWN \
2692 DDS_GUID_INITIALIZER, \
2693 DDS_SEQUENCE_NUMBER_UNKNOWN \
2721 #define DDS_WRITEPARAMS_DEFAULT \
2723 DDS_SAMPLE_IDENTITY_UNKNOWN, \
2724 DDS_SAMPLE_IDENTITY_UNKNOWN, \
2726 DDS_HANDLE_NIL_NATIVE \
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
2759 DDSCDllExport
struct DDS_PropertySeq*
2773 struct DDS_Locator *locator);