RTI Cloud Discovery Service Version 7.7.0
clouddiscoveryservice_infrastructure.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016-2025 Real-Time Innovations, Inc. All rights reserved.
3 * No duplications, whole or partial, manual or electronic, may be made
4 * without express written permission. Any such copies, or revisions thereof,
5 * must display this notice unaltered.
6 * This code contains trade secrets of Real-Time Innovations, Inc.
7 */
8
9#ifndef clouddiscoveryservice_infrastructure_h
10#define clouddiscoveryservice_infrastructure_h
11
12
13#ifndef cds_dll_h
14 #include "clouddiscoveryservice/clouddiscoveryservice_dll.h"
15#endif
16#ifndef ndds_c_h
17 #include "ndds/ndds_c.h"
18#endif
19#ifndef core_version_version_h
20 #include "core_version/core_version_version.h"
21#endif
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/*e \file
28 \brief Service infrastructure
29*/
30
31
32#define RTI_CDS_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT(T) \
33 struct T; \
34 CDSDllExport void T##_initialize(struct T *self); \
35 CDSDllExport void T##_finalize(struct T *self); \
36 CDSDllExport struct T *T##_copy(struct T *self, const struct T *from)
37
38#define RTI_CDS_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_W_ERROR_CHECKING(T) \
39 struct T; \
40 CDSDllExport RTIBool T##_initialize(struct T *self); \
41 CDSDllExport void T##_finalize(struct T *self); \
42 CDSDllExport RTIBool T##_copy(struct T *self, const struct T *from)
43
44
45/*e \ingroup RTI_CDS_ServiceProperty
46 *
47 * @brief Allows all domain IDs for @product.
48 *
49 */
50#define RTI_CDS_DomainListProperty_INITIALIZER \
51 { \
52 NULL, NULL \
53 }
54
55#define RTI_CDS_DOMAIN_LIST_PROPERTY_ALL_VALUE ("DOMAIN_LIST_ALL")
56#define RTI_CDS_DOMAIN_LIST_PROPERTY_EMPTY_VALUE ("")
57
58RTI_CDS_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT(RTI_CDS_DomainListProperty);
59
60struct RTI_CDS_DomainListProperty {
61 /*e
62 * @brief The list of domain IDs where @product processes the incoming
63 * participant announcements.
64 *
65 * @default NULL. Use value from XML configuration.
66 */
67 char *allow_domain_ids;
68
69 /*e
70 * @brief The list of domain IDs to deny or ignore. Overrides
71 * \ref allow_domain_ids.
72 *
73 * @default NULL. Use value from XML configuration.
74 */
75 char *deny_domain_ids;
76};
77
78#define RTI_CDS_TRANSPORT_UNICAST_PROPERTY_ALIAS_LENGTH_MAX (128)
79
80#define RTI_CDS_TRANSPORT_SELECTION_LENGTH_MAX (8)
81
82#define RTI_CDS_TransportUnicastProperty_INITIALIZER \
83 { \
84 { '\0' }, 0 \
85 }
86
87/*e \ingroup RTI_CDS_ServiceProperty
88 *
89 * @brief Empty transport selection list. Use value from XML configuration.
90 *
91 */
92#define RTI_CDS_TransportSelectionProperty_INITIALIZER \
93 { \
94 { RTI_CDS_TransportUnicastProperty_INITIALIZER }, 0 \
95 }
96
97RTI_CDS_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT(RTI_CDS_TransportSelectionProperty);
98
99struct RTI_CDS_TransportUnicastProperty {
100 /*e
101 * @brief Transport alias name.
102 */
103 char alias[RTI_CDS_TRANSPORT_UNICAST_PROPERTY_ALIAS_LENGTH_MAX + 1];
104 /*e
105 * @brief Receive port.
106 */
107 int receive_port;
108};
109
110struct RTI_CDS_TransportSelectionProperty {
111 /*e
112 * @brief \ref RTI_CDS_TransportUnicastProperty sequence.
113 */
114 struct RTI_CDS_TransportUnicastProperty
115 transports[RTI_CDS_TRANSPORT_SELECTION_LENGTH_MAX];
116 /*e
117 * @brief Indicates how many slots in the array are used.
118 */
119 int count;
120};
121
122#define RTI_CDS_FLOW_CONTROLLER_JOBS_UNLIMITED (0)
123#define RTI_CDS_FlowControllerProperty_INITIALIZER \
124 { \
125 RTI_CDS_FLOW_CONTROLLER_JOBS_UNLIMITED, 0, { 0, 0, 0 }, \
126 DDS_DURATION_INFINITE_VALUE \
127 }
128
129RTI_CDS_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT(RTI_CDS_FlowControllerProperty);
130
131typedef enum {
132 RTI_CDS_NEW_ANNOUNCEMENT_FLOW_CONTROLLER_OUTPUT_SLOT,
133 RTI_CDS_UPDATE_ANNOUNCEMENT_FLOW_CONTROLLER_OUTPUT_SLOT,
134 RTI_CDS_REFRESH_ANNOUNCEMENT_FLOW_CONTROLLER_OUTPUT_SLOT,
135 RTI_CDS_FlowControllerOutputSlotKind_COUNT
136} RTI_CDS_FlowControllerOutputSlotKind;
137
138struct RTI_CDS_FlowControllerProperty {
139 RTI_UINT64 output_jobs_per_second;
140 RTI_UINT64 max_burst_jobs;
141 RTI_INT32 output_slot_capacity_allocation
142 [RTI_CDS_FlowControllerOutputSlotKind_COUNT];
143 struct DDS_Duration_t flush_period;
144};
145
152 /* Indicates how many times CDS resends a new or change announcement. */
153 DDS_UnsignedLong new_or_change_participant_announcements;
154 /* Minimum duration for the random interval between a resend. */
155 struct DDS_Duration_t min_new_or_change_participant_announcements_period;
156 /* Maximum duration for the random interval between a resend. */
157 struct DDS_Duration_t max_new_or_change_participant_announcements_period;
158};
159
160#define RTI_CDS_ForwarderEventProperty_INITIALIZER \
161 { \
162 0, /* new_or_change_participant_announcements */ \
163 { 0, \
164 0 }, /* min_new_or_change_participant_announcements_period \
165 */ \
166 { \
167 0, 0 \
168 } /* max_new_or_change_participant_announcements_period */ \
169 }
170
171DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT(RTI_CDS_ForwarderEventProperty);
172
173
174#ifdef __cplusplus
175} /* extern "C" */
176#endif
177
178#endif /* clouddiscoveryservice_infrastructure_h */
Data structure to configure the forwarder resend event mechanism. It allows CDS to resend a new or up...
Definition: clouddiscoveryservice_infrastructure.h:151