RTI Connext Micro  Version 2.4.4.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dds_c_discovery.h
Go to the documentation of this file.
1 /*
2  * FILE: dds_c_discovery.h - DDS discovery data definitions
3  *
4  * (c) Copyright, Real-Time Innovations, 2012-2015.
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  * 26jan2015,tk MICRO-1028/PR#13473 Added macros to test for builtin topics
16  * 23jan2012,tk Written
17  */
18 /*ce
19  * \file
20  * \brief DDS discovery data definitions
21  */
22 /*e
23  @ingroup DDSDiscoveryModule
24 */
25 #ifndef dds_c_discovery_h
26 #define dds_c_discovery_h
27 
28 #ifndef dds_c_dll_h
29 #include "dds_c/dds_c_dll.h"
30 #endif
31 #ifndef dds_c_infrastructure_h
33 #endif
34 #ifndef dds_c_domain_h
35 #include "dds_c/dds_c_domain.h"
36 #endif
37 #ifndef dds_c_type_h
38 #include "dds_c/dds_c_type.h"
39 #endif
40 
41 #ifdef __cplusplus
42 extern "C"
43 {
44 #endif
45 
46 #define DDS_BUILTIN_ENDPOINT_PARTICIPANT_ANNOUNCER 0x00000001 << 0
47 #define DDS_BUILTIN_ENDPOINT_PARTICIPANT_DETECTOR 0x00000001 << 1
48 #define DDS_BUILTIN_ENDPOINT_PUBLICATION_ANNOUNCER 0x00000001 << 2
49 #define DDS_BUILTIN_ENDPOINT_PUBLICATION_DETECTOR 0x00000001 << 3
50 #define DDS_BUILTIN_ENDPOINT_SUBSCRIPTION_ANNOUNCER 0x00000001 << 4
51 #define DDS_BUILTIN_ENDPOINT_SUBSCRIPTION_DETECTOR 0x00000001 << 5
52 
53 #define DDSC_PARTICIPANT_ADDRESS_COUNT_MAX RTPS_PID_USERDATA_IPADDRESS_COUNT_MAX
54 
55 #if 0
56 /*e \dref_ParticipantBuiltInTopicGroupDocs
57  */
58  #endif
59 
60 /*ci
61  * \brief Array index for the object_id in a BuiltinTopicKey_t
62  */
63 #define DDS_BUILTIN_TOPIC_KEY_OBJECT_ID 3
64 
65 /*ci
66  * \brief Determine if an object id is a built-in topic or
67  * a user-defined topic
68  *
69  * \param[in] oid Object id to test
70  *
71  * \return DDS_BOOLEAN_FALSE if the test is false, DDS_BOOLEAN_TRUE otherwise
72  */
73 DDSCDllExport DDS_Boolean
74 DDS_ObjectId_is_builtin(DDS_Long oid);
75 
76 /*ci
77  * \brief Determine if a DDS_BuiltinTopicKey_t is a built-in topic or
78  * a user-defined topic
79  *
80  * \param[in] key DDS_BuiltinTopicKey_t to test
81  *
82  * \return DDS_BOOLEAN_FALSE if the test is false, DDS_BOOLEAN_TRUE otherwise
83  */
84 DDSCDllExport DDS_Boolean
85 DDS_BuiltinTopicKey_is_builtin(const struct DDS_BuiltinTopicKey_t *const key);
86 
87 /*e \dref_ParticipantBuiltinTopicData
88  */
90 {
91  /*e \dref_ParticipantBuiltinTopicData_key
92  */
94 
95  /*e \dref_ParticipantBuiltinTopicData_participant_name
96  */
98 
99  /*e \dref_ParticipantBuiltinTopicData_dds_builtin_endpoints
100  */
102 
103  /*e \dref_ParticipantBuiltinTopicData_rtps_protocol_version
104  */
106 
107  /*e \dref_ParticipantBuiltinTopicData_rtps_vendor_id
108  */
110 
111  /*e \dref_ParticipantBuiltinTopicData_default_unicast_locators
112  */
114 
115  /*e \dref_ParticipantBuiltinTopicData_default_multicast_locators
116  */
118 
119  /*e \dref_ParticipantBuiltinTopicData_metatraffic_unicast_locators
120  */
122 
123  /*e \dref_ParticipantBuiltinTopicData_metatraffic_multicast_locators
124  */
126 
127  /*e \dref_ParticipantBuiltinTopicData_liveliness_lease_duration
128  */
130 
131  /*e \dref_ParticipantBuiltinTopicData_product_version
132  */
134 
135 };
136 
137 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_ParticipantBuiltinTopicData);
138 
139 /*i \dref_DDS_ParticipantBuiltinTopicData_INITIALIZER
140  */
141 #define DDS_ParticipantBuiltinTopicData_INITIALIZER { \
142  DDS_BuiltinTopicKey_t_INITIALIZER, \
143  DDS_ENTITY_NAME_QOS_POLICY_DEFAULT, \
144  0, /* builtin endpoints */ \
145  DDS_PROTOCOL_VERSION_DEFAULT, \
146  DDS_VENDOR_ID_DEFAULT, \
147  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator), \
148  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator), \
149  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator), \
150  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator), \
151  {100L,0L}, /* participant_liveliness_lease_duration */\
152  DDS_PRODUCTVERSION_UNKNOWN }
153 
154 #define T struct DDS_ParticipantBuiltinTopicData
155 #define TSeq DDS_ParticipantBuiltinTopicDataSeq
156 #include <reda/reda_sequence_decl.h>
157 
158 #define DDS_ParticipantBuiltinTopicDataSeq_INITIALIZER \
159 DDS_SEQUENCE_INITIALIZER(struct DDS_ParticipantBuiltinTopicData)
160 
161 
162 /*e \dref_PublicationBuiltInTopicGroupDocs
163  */
164 
165 /*e \dref_PublicationBuiltinTopicData
166  */
168 {
169  /*e \dref_PublicationBuiltinTopicData_key
170  */
172 
173  /*e \dref_PublicationBuiltinTopicData_participant_key
174  */
176 
177  /*e \dref_PublicationBuiltinTopicData_topic_name
178  */
179  char *topic_name;
180 
181  /*e \dref_PublicationBuiltinTopicData_type_name
182  */
183  char *type_name;
184 
185  /*e \dref_PublicationBuiltinTopicData_deadline
186  */
188 
189  /*e \dref_PublicationBuiltinTopicData_ownership
190  */
192 
193  /*e \dref_PublicationBuiltinTopicData_ownership_strength
194  */
196 
197  /*e \dref_PublicationBuiltinTopicData_reliability
198  */
200 
201  /*e \dref_PublicationBuiltinTopicData_liveliness
202  */
204 
205  /*e \dref_PublicationBuiltinTopicData_durability
206  */
208 
209  /*e \dref_PublicationBuiltinTopicData_unicast_locator
210  */
212 
213  /*i \dref_PublicationBuiltinTopicData_send_queue_size
214  */
215  DDS_Long send_queue_size;
216 };
217 
218 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_PublicationBuiltinTopicData);
219 
220 /*i \dref_PublicationBuiltinTopicData_INITIALIZER
221  */
222 #define DDS_PublicationBuiltinTopicData_INITIALIZER { \
223  DDS_BuiltinTopicKey_t_INITIALIZER, \
224  DDS_BuiltinTopicKey_t_INITIALIZER, \
225  NULL,\
226  NULL,\
227  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
228  DDS_OWNERSHIP_QOS_POLICY_DEFAULT,\
229  DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT, \
230  DDS_RELIABILITY_QOS_POLICY_DEFAULT,\
231  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
232  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
233  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator),\
234  256\
235 }
236 
237 #define T struct DDS_PublicationBuiltinTopicData
238 #define TSeq DDS_PublicationBuiltinTopicDataSeq
239 #include <reda/reda_sequence_decl.h>
240 
241 #define DDS_PublicationBuiltinTopicDataSeq_INITIALIZER \
242 DDS_SEQUENCE_INITIALIZER(struct DDS_PublicationBuiltinTopicData)
243 
244 /*e \dref_SubscriptionBuiltInTopicGroupDocs
245  */
246 
247 /*e \dref_SubscriptionBuiltinTopicData
248  */
250 {
251  /*e \dref_SubscriptionBuiltinTopicData_key
252  * Key GUID must be first
253  */
255 
256  /*e \dref_SubscriptionBuiltinTopicData_participant_key
257  */
259 
260  /*e \dref_SubscriptionBuiltinTopicData_topic_name
261  */
262  char *topic_name;
263 
264  /*e \dref_SubscriptionBuiltinTopicData_type_name
265  */
266  char *type_name;
267 
268  /*e \dref_SubscriptionBuiltinTopicData_deadline
269  */
271 
272  /*e \dref_SubscriptionBuiltinTopicData_ownership
273  */
275 
276  /*e \dref_SubscriptionBuiltinTopicData_reliability
277  */
279 
280  /*e \dref_SubscriptionBuiltinTopicData_liveliness
281  */
283 
284  /*e \dref_SubscriptionBuiltinTopicData_durability
285  */
287 
288  /*e \dref_SubscriptionBuiltinTopicData_unicast_locator
289  */
291 
292  /*e \dref_SubscriptionBuiltinTopicData_multicast_locator
293  */
295 };
296 
297 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_SubscriptionBuiltinTopicData);
298 
299 /*i \dref_DDS_SubscriptionBuiltinTopicData_INITIALIZER
300  */
301 #define DDS_SubscriptionBuiltinTopicData_INITIALIZER { \
302  DDS_BuiltinTopicKey_t_INITIALIZER, \
303  DDS_BuiltinTopicKey_t_INITIALIZER, \
304  NULL,\
305  NULL,\
306  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
307  DDS_OWNERSHIP_QOS_POLICY_DEFAULT ,\
308  DDS_RELIABILITY_QOS_POLICY_DEFAULT,\
309  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
310  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
311  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator),\
312  DDS_SEQUENCE_INITIALIZER(struct DDS_Locator)\
313 }
314 
315 #define T struct DDS_SubscriptionBuiltinTopicData
316 #define TSeq DDS_SubscriptionBuiltinTopicDataSeq
317 #include <reda/reda_sequence_decl.h>
318 
319 #define DDS_SubscriptionBuiltinTopicDataSeq_INITIALIZER \
320 DDS_SEQUENCE_INITIALIZER(struct DDS_SubscriptionBuiltinTopicData)
321 
322 struct NDDS_RemoteEntityImpl;
323 typedef struct NDDS_RemoteEntityImpl NDDS_RemoteEntity;
324 struct DDS_RemotePublicationImpl;
325 typedef struct DDS_RemotePublicationImpl DDS_RemotePublication;
326 typedef struct DDS_RemoteSubscriptionImpl DDS_RemoteSubscription;
327 typedef struct DDS_RemoteParticipantImpl DDS_RemoteParticipant;
328 
329 /*ci \dref_RemoteParticipant_assert
330  */
331 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
332 NDDS_DomainParticipant_assert_remote_participant(
333  DDS_DomainParticipant *const participant,
334  struct DDS_ParticipantBuiltinTopicData *const data,
335  DDS_Boolean *const is_new);
336 
337 /*ci \dref_RemoteParticipant_liveliness_refresh
338  */
339 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
340 NDDS_DomainParticipant_refresh_remote_participant_liveliness(
341  DDS_DomainParticipant * const participant,
342  const struct DDS_BuiltinTopicKey_t *const key);
343 
344 /*ci \dref_RemoteParticipant_reset
345  */
346 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
347 NDDS_DomainParticipant_reset_remote_participant(
348  DDS_DomainParticipant *const participant,
349  const struct DDS_BuiltinTopicKey_t *const key);
350 
351 #ifndef RTI_CERT
352 /*ci \dref_RemoteParticipant_remove
353  */
354 SHOULD_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
355 NDDS_DomainParticipant_remove_remote_participant(
356  DDS_DomainParticipant *const participant,
357  const DDS_BuiltinTopicKey_t *const key);
358 #endif /* !RTI_CERT */
359 
360 /*ci \dref_RemoteParticipant_enable_name
361  */
362 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
363 NDDS_DomainParticipant_enable_remote_participant_name(
364  DDS_DomainParticipant * const participant,
365  const struct DDS_ParticipantBuiltinTopicData *const data);
366 
367 /*ci \dref_RemoteParticipant_enable_name
368  */
369 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
370 NDDS_DomainParticipant_enable_remote_participant_guid(
371  DDS_DomainParticipant * const participant,
372  const struct DDS_ParticipantBuiltinTopicData *const data);
373 
374 /*ci \dref_RemotePublication_assert
375  */
376 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
377 NDDS_DomainParticipant_assert_remote_publication(
378  DDS_DomainParticipant *const participant,
379  const char *const participant_name,
380  const struct DDS_PublicationBuiltinTopicData *const data,
381  NDDS_TypePluginKeyKind key_kind);
382 
383 #ifndef RTI_CERT
384 /*ci \dref_RemotePublication_remove
385  */
386 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
387 NDDS_DomainParticipant_remove_remote_publication(
388  DDS_DomainParticipant *const participant,
389  const DDS_BuiltinTopicKey_t *const key);
390 #endif /* !RTI_CERT */
391 
392 /*ci \dref_RemoteSubscription_assert
393  */
394 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
395 NDDS_DomainParticipant_assert_remote_subscription(
396  DDS_DomainParticipant* const participant,
397  const char *const participant_name,
398  const struct DDS_SubscriptionBuiltinTopicData *const data,
399  NDDS_TypePluginKeyKind key_kind);
400 
401 #ifndef RTI_CERT
402 /*ci \dref_RemoteSubscription_remove
403  */
404 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
405 NDDS_DomainParticipant_remove_remote_subscription(
406  DDS_DomainParticipant* const participant,
407  const DDS_BuiltinTopicKey_t* const key);
408 #endif /* !RTI_CERT */
409 
410 #ifdef __cplusplus
411 } /* extern "C" */
412 #endif
413 
414 
415 #endif /* dds_c_discovery_h */

RTI Connext Micro Version 2.4.4.0 Copyright © Thu Apr 30 2015 Real-Time Innovations, Inc