RTI Connext DDS Micro  Version 2.4.10
 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  * 04nov2015,tk MICRO-1505 Reduce memory footprint
16  * 19may2015,as MICRO-1193 Refactoring of Sequence API levels
17  * 15may2015,tk MICRO-1221/PR#14767 Removed send_queue_size
18  * 26jan2015,tk MICRO-1028/PR#13473 Added macros to test for builtin topics
19  * 23jan2012,tk Written
20  */
21 /*ce
22  * \file
23  * \brief DDS discovery data definitions
24  */
25 /*e
26  @ingroup DDSDiscoveryModule
27 */
28 #ifndef dds_c_discovery_h
29 #define dds_c_discovery_h
30 
31 #ifndef dds_c_dll_h
32 #include "dds_c/dds_c_dll.h"
33 #endif
34 #ifndef dds_c_infrastructure_h
36 #endif
37 #ifndef dds_c_domain_h
38 #include "dds_c/dds_c_domain.h"
39 #endif
40 #ifndef dds_c_type_h
41 #include "dds_c/dds_c_type.h"
42 #endif
43 
44 #ifdef __cplusplus
45 extern "C"
46 {
47 #endif
48 
49 #define DDS_BUILTIN_ENDPOINT_PARTICIPANT_ANNOUNCER 0x00000001 << 0
50 #define DDS_BUILTIN_ENDPOINT_PARTICIPANT_DETECTOR 0x00000001 << 1
51 #define DDS_BUILTIN_ENDPOINT_PUBLICATION_ANNOUNCER 0x00000001 << 2
52 #define DDS_BUILTIN_ENDPOINT_PUBLICATION_DETECTOR 0x00000001 << 3
53 #define DDS_BUILTIN_ENDPOINT_SUBSCRIPTION_ANNOUNCER 0x00000001 << 4
54 #define DDS_BUILTIN_ENDPOINT_SUBSCRIPTION_DETECTOR 0x00000001 << 5
55 
56 #define DDSC_PARTICIPANT_ADDRESS_COUNT_MAX RTPS_PID_USERDATA_IPADDRESS_COUNT_MAX
57 
58 /*ci
59  * \brief Array index for the object_id in a BuiltinTopicKey_t
60  */
61 #define DDS_BUILTIN_TOPIC_KEY_OBJECT_ID 3
62 
63 /*ci
64  * \brief Determine if an object id is a built-in topic or
65  * a user-defined topic
66  *
67  * \param[in] oid Object id to test
68  *
69  * \return DDS_BOOLEAN_FALSE if the test is false, DDS_BOOLEAN_TRUE otherwise
70  */
71 DDSCDllExport DDS_Boolean
72 DDS_ObjectId_is_builtin(DDS_Long oid);
73 
74 /*ci
75  * \brief Determine if a DDS_BuiltinTopicKey_t is a built-in topic or
76  * a user-defined topic
77  *
78  * \param[in] key DDS_BuiltinTopicKey_t to test
79  *
80  * \return DDS_BOOLEAN_FALSE if the test is false, DDS_BOOLEAN_TRUE otherwise
81  */
82 DDSCDllExport DDS_Boolean
83 DDS_BuiltinTopicKey_is_builtin(const struct DDS_BuiltinTopicKey_t *const key);
84 
85 DDSCDllExport DDS_Boolean
86 DDS_ObjectId_is_compatible(DDS_UnsignedLong dr_id,DDS_UnsignedLong dw_id);
87 
88 /*e \dref_ParticipantBuiltinTopicData
89  */
90 struct DDSCPPDllExport DDS_ParticipantBuiltinTopicData
91 {
92  /*e \dref_ParticipantBuiltinTopicData_key
93  */
95 
96  /*e \dref_ParticipantBuiltinTopicData_participant_name
97  */
98  struct DDS_EntityNameQosPolicy participant_name;
99 
100  /*e \dref_ParticipantBuiltinTopicData_dds_builtin_endpoints
101  */
103 
104  /*e \dref_ParticipantBuiltinTopicData_rtps_protocol_version
105  */
107 
108  /*e \dref_ParticipantBuiltinTopicData_rtps_vendor_id
109  */
110  struct DDS_VendorId_t rtps_vendor_id;
111 
112  /*e \dref_ParticipantBuiltinTopicData_default_unicast_locators
113  */
114  struct DDS_LocatorSeq default_unicast_locators;
115 
116  /*e \dref_ParticipantBuiltinTopicData_default_multicast_locators
117  */
118  struct DDS_LocatorSeq default_multicast_locators;
119 
120  /*e \dref_ParticipantBuiltinTopicData_metatraffic_unicast_locators
121  */
122  struct DDS_LocatorSeq metatraffic_unicast_locators;
123 
124  /*e \dref_ParticipantBuiltinTopicData_metatraffic_multicast_locators
125  */
126  struct DDS_LocatorSeq metatraffic_multicast_locators;
127 
128  /*e \dref_ParticipantBuiltinTopicData_liveliness_lease_duration
129  */
130  struct DDS_Duration_t liveliness_lease_duration;
131 
132  /*e \dref_ParticipantBuiltinTopicData_product_version
133  */
134  struct DDS_ProductVersion_t product_version;
135 
136  DDSC_CPP_QOS_METHODS(DDS_ParticipantBuiltinTopicData)
137 };
138 
139 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_ParticipantBuiltinTopicData);
140 
141 /*i \dref_DDS_ParticipantBuiltinTopicData_INITIALIZER
142  */
143 #define DDS_ParticipantBuiltinTopicData_INITIALIZER { \
144  DDS_BuiltinTopicKey_t_INITIALIZER, \
145  DDS_ENTITY_NAME_QOS_POLICY_DEFAULT, \
146  0, /* builtin endpoints */ \
147  DDS_PROTOCOL_VERSION_DEFAULT, \
148  DDS_VENDOR_ID_DEFAULT, \
149  DDS_SEQUENCE_INITIALIZER, \
150  DDS_SEQUENCE_INITIALIZER, \
151  DDS_SEQUENCE_INITIALIZER, \
152  DDS_SEQUENCE_INITIALIZER, \
153  {100L,0L}, /* participant_liveliness_lease_duration */\
154  DDS_PRODUCTVERSION_UNKNOWN }
155 
156 #define T struct DDS_ParticipantBuiltinTopicData
157 #define TSeq DDS_ParticipantBuiltinTopicDataSeq
158 #define REDA_SEQUENCE_USER_API
159 #include <reda/reda_sequence_decl.h>
160 
161 #define DDS_ParticipantBuiltinTopicDataSeq_INITIALIZER \
162 DDS_SEQUENCE_INITIALIZER
163 
164 
165 /*e \dref_PublicationBuiltInTopicGroupDocs
166  */
167 
168 /*e \dref_PublicationBuiltinTopicData
169  */
170 struct DDSCPPDllExport DDS_PublicationBuiltinTopicData
171 {
172  /*e \dref_PublicationBuiltinTopicData_key
173  */
175 
176  /*e \dref_PublicationBuiltinTopicData_participant_key
177  */
178  struct DDS_BuiltinTopicKey_t participant_key;
179 
180  /*e \dref_PublicationBuiltinTopicData_topic_name
181  */
182  char *topic_name;
183 
184  /*e \dref_PublicationBuiltinTopicData_type_name
185  */
186  char *type_name;
187 
188  /*e \dref_PublicationBuiltinTopicData_deadline
189  */
190  struct DDS_DeadlineQosPolicy deadline;
191 
192  /*e \dref_PublicationBuiltinTopicData_ownership
193  */
194  struct DDS_OwnershipQosPolicy ownership;
195 
196  /*e \dref_PublicationBuiltinTopicData_ownership_strength
197  */
198  struct DDS_OwnershipStrengthQosPolicy ownership_strength;
199 
200  /*e \dref_PublicationBuiltinTopicData_reliability
201  */
202  struct DDS_ReliabilityQosPolicy reliability;
203 
204  /*e \dref_PublicationBuiltinTopicData_liveliness
205  */
206  struct DDS_LivelinessQosPolicy liveliness;
207 
208  /*e \dref_PublicationBuiltinTopicData_durability
209  */
210  struct DDS_DurabilityQosPolicy durability;
211 
212  /*e \dref_PublicationBuiltinTopicData_destination_order
213  */
214  struct DDS_DestinationOrderQosPolicy destination_order;
215 
216  /*e \dref_PublicationBuiltinTopicData_unicast_locator
217  */
218  struct DDS_LocatorSeq unicast_locator;
219 
220  DDSC_CPP_QOS_METHODS(DDS_PublicationBuiltinTopicData)
221 };
222 
223 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_PublicationBuiltinTopicData);
224 
225 /*i \dref_PublicationBuiltinTopicData_INITIALIZER
226  */
227 #define DDS_PublicationBuiltinTopicData_INITIALIZER { \
228  DDS_BuiltinTopicKey_t_INITIALIZER, \
229  DDS_BuiltinTopicKey_t_INITIALIZER, \
230  NULL,\
231  NULL,\
232  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
233  DDS_OWNERSHIP_QOS_POLICY_DEFAULT,\
234  DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT, \
235  DDS_RELIABILITY_QOS_POLICY_DEFAULT,\
236  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
237  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
238  DDS_DESTINATION_ORDER_QOS_POLICY_DEFAULT,\
239  DDS_SEQUENCE_INITIALIZER \
240 }
241 
242 #define T struct DDS_PublicationBuiltinTopicData
243 #define TSeq DDS_PublicationBuiltinTopicDataSeq
244 #define REDA_SEQUENCE_USER_API
245 #include <reda/reda_sequence_decl.h>
246 
247 #define DDS_PublicationBuiltinTopicDataSeq_INITIALIZER \
248 DDS_SEQUENCE_INITIALIZER
249 
250 /*e \dref_SubscriptionBuiltInTopicGroupDocs
251  */
252 
253 /*e \dref_SubscriptionBuiltinTopicData
254  */
255 struct DDSCPPDllExport DDS_SubscriptionBuiltinTopicData
256 {
257  /*e \dref_SubscriptionBuiltinTopicData_key
258  * Key GUID must be first
259  */
261 
262  /*e \dref_SubscriptionBuiltinTopicData_participant_key
263  */
264  struct DDS_BuiltinTopicKey_t participant_key;
265 
266  /*e \dref_SubscriptionBuiltinTopicData_topic_name
267  */
268  char *topic_name;
269 
270  /*e \dref_SubscriptionBuiltinTopicData_type_name
271  */
272  char *type_name;
273 
274  /*e \dref_SubscriptionBuiltinTopicData_deadline
275  */
276  struct DDS_DeadlineQosPolicy deadline;
277 
278  /*e \dref_SubscriptionBuiltinTopicData_ownership
279  */
280  struct DDS_OwnershipQosPolicy ownership;
281 
282  /*e \dref_SubscriptionBuiltinTopicData_reliability
283  */
284  struct DDS_ReliabilityQosPolicy reliability;
285 
286  /*e \dref_SubscriptionBuiltinTopicData_liveliness
287  */
288  struct DDS_LivelinessQosPolicy liveliness;
289 
290  /*e \dref_SubscriptionBuiltinTopicData_durability
291  */
292  struct DDS_DurabilityQosPolicy durability;
293 
294  /*e \dref_SubscriptionBuiltinTopicData_destination_order
295  */
296  struct DDS_DestinationOrderQosPolicy destination_order;
297 
298  /*e \dref_SubscriptionBuiltinTopicData_unicast_locator
299  */
300  struct DDS_LocatorSeq unicast_locator;
301 
302  /*e \dref_SubscriptionBuiltinTopicData_multicast_locator
303  */
304  struct DDS_LocatorSeq multicast_locator;
305 
306  DDSC_CPP_QOS_METHODS(DDS_SubscriptionBuiltinTopicData)
307 };
308 
309 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_SubscriptionBuiltinTopicData);
310 
311 /*i \dref_DDS_SubscriptionBuiltinTopicData_INITIALIZER
312  */
313 #define DDS_SubscriptionBuiltinTopicData_INITIALIZER { \
314  DDS_BuiltinTopicKey_t_INITIALIZER, \
315  DDS_BuiltinTopicKey_t_INITIALIZER, \
316  NULL,\
317  NULL,\
318  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
319  DDS_OWNERSHIP_QOS_POLICY_DEFAULT ,\
320  DDS_RELIABILITY_QOS_POLICY_DEFAULT,\
321  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
322  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
323  DDS_DESTINATION_ORDER_QOS_POLICY_DEFAULT,\
324  DDS_SEQUENCE_INITIALIZER,\
325  DDS_SEQUENCE_INITIALIZER,\
326 }
327 
328 #define T struct DDS_SubscriptionBuiltinTopicData
329 #define TSeq DDS_SubscriptionBuiltinTopicDataSeq
330 #define REDA_SEQUENCE_USER_API
331 #include <reda/reda_sequence_decl.h>
332 
333 #define DDS_SubscriptionBuiltinTopicDataSeq_INITIALIZER \
334 DDS_SEQUENCE_INITIALIZER
335 
336 struct NDDS_RemoteEntityImpl;
337 typedef struct NDDS_RemoteEntityImpl NDDS_RemoteEntity;
338 struct DDS_RemotePublicationImpl;
339 typedef struct DDS_RemotePublicationImpl DDS_RemotePublication;
340 typedef struct DDS_RemoteSubscriptionImpl DDS_RemoteSubscription;
341 typedef struct DDS_RemoteParticipantImpl DDS_RemoteParticipant;
342 
343 /*ci
344  * \brief Assert a remote participant into a participant
345  *
346  * \details
347  * Assert a remote participant into the participant. This is typically
348  * done as part of the discovery process where a discovery plugin has
349  * discovered a remote participant via some means. It is legal to assert a
350  * remote participant multiple times. If the remote participant does not
351  * yet exist in the participant is_new is set to TRUE, otherwise if it does
352  * exit is_new is set to FALSE. Note that asserting a remote participant
353  * does not automatically enable it. Either \ref
354  * NDDS_DomainParticipant_enable_remote_participant_name or \ref
355  * NDDS_DomainParticipant_enable_remote_participant_guid must be called for
356  * that. Matching of a remote participant's endpoints with local endpoints
357  * does not occur until the remote participant is enabled.
358  *
359  * \param[in] participant The participant to assert the remote participant in
360  * \param[in] data Discovery data for the remote participant
361  * \param[inout] is_new TRUE is the participant already has seen this
362  * participant, FALSE otherwise.
363  *
364  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
365  */
366 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
367 NDDS_DomainParticipant_assert_remote_participant(
368  DDS_DomainParticipant *const participant,
369  struct DDS_ParticipantBuiltinTopicData *const data,
370  DDS_Boolean *const is_new);
371 
372 /*ci
373  * \brief Refresh the liveliness for a remote participant
374  *
375  * \details
376  * This function informs the participant that the remote participant with
377  * a key is still alive. How this is determined is outside the scope of this
378  * function. If a remote participant fails to refresh its liveliness it will
379  * be reset/removed from the participant.
380  *
381  * \param[in] participant The participant to refresh the liveliness in
382  * \param[in] key The key of the remote participant that has refreshed
383  * its liveliness.
384  *
385  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
386  */
387 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
388 NDDS_DomainParticipant_refresh_remote_participant_liveliness(
389  DDS_DomainParticipant * const participant,
390  const struct DDS_BuiltinTopicKey_t *const key);
391 
392 /*ci
393  * \brief Reset a remote participant from a participant
394  *
395  * \details
396  * This function resets a remote participant and all its endpoints in the
397  * participant. When the remote endpoints are reset they are also unmatched
398  * from local endpoints. However, the remote participants and remote endpoints
399  * are not removed from the participant. This feature is typically used in
400  * static discovery where remote participants and endponts are statically
401  * asserted. After they have been reset they can be re-enabled with one the
402  * remote participant enable functions
403  * \ref NDDS_DomainParticipant_enable_remote_participant_guid or
404  * \ref NDDS_DomainParticipant_enable_remote_participant_name
405  *
406  * \param[in] participant The participant to remove the remote participant from
407  * \param[in] key The key of the remote participant to remove
408  *
409  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
410  */
411 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
412 NDDS_DomainParticipant_reset_remote_participant(
413  DDS_DomainParticipant *const participant,
414  const struct DDS_BuiltinTopicKey_t *const key);
415 
416 #ifndef RTI_CERT
417 /*ci
418  * \brief Remove a remote participant from a participant
419  *
420  * \details
421  * This function removes a remote participant and all its endpoints from the
422  * participant. When the remote endpoints are removed they are also unmatched
423  * from local endpoints.
424  *
425  * \param[in] participant The participant to remove the remote participant from
426  * \param[in] key The key of the remote participant to remove
427  *
428  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
429  */
430 SHOULD_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
431 NDDS_DomainParticipant_remove_remote_participant(
432  DDS_DomainParticipant *const participant,
433  const DDS_BuiltinTopicKey_t *const key);
434 #endif /* !RTI_CERT */
435 
436 /*ci
437  * \brief Enable a remote participant by name
438  *
439  * \details
440  * When a remote participant is asserted it is initially in a disabled state.
441  * Any endpoint asserted as part of the remote participant is also disabled
442  * and no matching occur. This function enables a remote participant which
443  * causes matching with local entities. In addition the liveliness timer
444  * is started and the remote participant must maintain its liveliness to
445  * avoid being reset/removed. This function is called when a participant has
446  * been asserted statically and is only known by name. On successful
447  * return the remote participant has been updated with a GUID (taken from the
448  * data input argument) and all its remote endpoints have been matched with
449  * local endpoints.
450  *
451  * \param[in] participant The participant to enable the remote participant in
452  * \param[in] data The discovery data to enable the remote participant
453  * with
454  *
455  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
456  */
457 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
458 NDDS_DomainParticipant_enable_remote_participant_name(
459  DDS_DomainParticipant * const participant,
460  const struct DDS_ParticipantBuiltinTopicData *const data);
461 
462 /*ci
463  * \brief Enable a remote participant by GUID
464  *
465  * \details
466  * When a remote participant is asserted it is initially in a disabled state.
467  * Any endpoint asserted as part of the remote participant is also disabled
468  * and no matching occur. This function enables a remote participant which
469  * causes matching with local entities. In addition the liveliness timer
470  * is started and the remote participant must maintain its liveliness to
471  * avoid being reset/removed. This function is called when participant has
472  * been detected based on discovery data with a valid GUID. On successful
473  * return the remote participant is enabled and all its remote endpoints have
474  * been matched with local endpoints.
475  *
476  * \param[in] participant The participant to enable the remote participant in
477  * \param[in] data The discovery data to enable the remote participant
478  * with
479  *
480  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
481  */
482 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
483 NDDS_DomainParticipant_enable_remote_participant_guid(
484  DDS_DomainParticipant * const participant,
485  const struct DDS_ParticipantBuiltinTopicData *const data);
486 
487 /*ci
488  * \brief Assert a remote publication into a participant
489  *
490  * \details
491  * This function adds a remote publication as an endpoint in a remote
492  * participant. Either the name or the GUID of the participant must be
493  * specified, but not both. The name is used for static discovery
494  * when the GUID of the participant is not known, while the participant
495  * key in the data input is used for dynamic discovery.
496  *
497  * If the remote participant is already enabled the remote publication is
498  * also enabled automatically. Otherwise the remote publication is created
499  * in a disabled state and enabled when the remote participant is enabled.
500  *
501  * \param[in] participant The participant to assert the remote publication in
502  * \param[in] participant_name The name of the remote publication's parent
503  * \param[in] data Discovery data for the remote publication
504  * \param[in] key_kind The type of key for the topic published by the remote
505  * publication
506  *
507  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
508  */
509 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
510 NDDS_DomainParticipant_assert_remote_publication(
511  DDS_DomainParticipant *const participant,
512  const char *const participant_name,
513  const struct DDS_PublicationBuiltinTopicData *const data,
514  NDDS_TypePluginKeyKind key_kind);
515 
516 #ifndef RTI_CERT
517 /*ci
518  * \brief Remove a remote publication from a participant
519  *
520  * \details
521  * This function removes a remote publication as an endpoint from a remote
522  * participant. It is unmatched from local endpoints before removal.
523  *
524  * \param[in] participant The participant to remove the remote publication from
525  * \param[in] key The key for the remote publication that is removed
526  *
527  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
528  */
529 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
530 NDDS_DomainParticipant_remove_remote_publication(
531  DDS_DomainParticipant *const participant,
532  const DDS_BuiltinTopicKey_t *const key);
533 #endif /* !RTI_CERT */
534 
535 /*ci
536  * \brief Assert a remote subscription into a participant
537  *
538  * \details
539  * This function adds a remote subscription as an endpoint in a remote
540  * participant. Either the name or the GUID of the participant must be
541  * specified, but not both. The name is typically used for static discovery
542  * when the GUID of the participant is not known, while the participant
543  * key in the data input is used for dynamic discovery.
544  *
545  * If the remote participant is already enabled the remote subscription is
546  * also enabled automatically. Otherwise the remote subscription is created
547  * in a disabled state and enabled when the remote participant is enabled.
548  *
549  * \param[in] participant The participant to assert the remote publication in
550  * \param[in] participant_name The name of the remote subscription's parent
551  * \param[in] data Discovery data for the remote subscription
552  * \param[in] key_kind The type of key for the topic subscribed to by the
553  * remote subscription
554  *
555  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
556  */
557 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
558 NDDS_DomainParticipant_assert_remote_subscription(
559  DDS_DomainParticipant* const participant,
560  const char *const participant_name,
561  const struct DDS_SubscriptionBuiltinTopicData *const data,
562  NDDS_TypePluginKeyKind key_kind);
563 
564 #ifndef RTI_CERT
565 /*ci
566  * \brief Remove a remote subscription from a participant
567  *
568  * \details
569  * This function removes a remote subscription as an endpoint from a remote
570  * participant. It is unmatched from local endpoints before removal.
571  *
572  * \param[in] participant The participant to remove the remote subscription from
573  * \param[in] key The key for the remote subscription that is removed
574  *
575  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
576  */
577 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
578 NDDS_DomainParticipant_remove_remote_subscription(
579  DDS_DomainParticipant* const participant,
580  const DDS_BuiltinTopicKey_t* const key);
581 #endif /* !RTI_CERT */
582 
583 
584 /*ci
585  * \brief Remove a remote DDS DataWriter as a peer for a local DDS datareader
586  *
587  * \param[in] datareader The local datareader
588  * \param[in] dp_key The peer's participant key
589  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
590  *
591  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
592  */
593 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
594 DDS_DataReader_remove_peer(DDS_DataReader *const datareader,
595  const DDS_BuiltinTopicKey_t *const dp_key,
596  RTI_INT32 entity_id);
597 
598 /*ci
599  * \brief Remove a remote DDS DataReader as a peer for a local DDS datawriter
600  *
601  * \param[in] datawriter The local datawriter
602  * \param[in] dp_key The peer's participant key
603  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
604  *
605  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
606  */
607 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
608 DDS_DataWriter_remove_peer(DDS_DataWriter *const datawriter,
609  const DDS_BuiltinTopicKey_t *const dp_key,
610  RTI_INT32 entity_id);
611 
612 #ifndef RTI_CERT
613 /*ci
614  * \brief Remove all remote DDS DataWriters with the entity_id as a peer
615  * from all discovered participants
616  *
617  * \param[in] datareader The local datareader
618  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
619  *
620  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
621  */
622 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
623 DDS_DataReader_remove_all_peers(DDS_DataReader *const datareader,
624  RTI_INT32 entity_id);
625 
626 /*ci
627  * \brief Remove all remote DDS DataReaders with the entity_id as a peer
628  * from all discovered participants
629  *
630  * \param[in] datawriter The local datawriter
631  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
632  *
633  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
634  */
635 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
636 DDS_DataWriter_remove_all_peers(DDS_DataWriter *const datawriter,
637  RTI_INT32 entity_id);
638 
639 /*ci
640  * \brief Add a remote DDS DataReader with the entity_id as a peer to a local
641  * DDS DataWriter
642  *
643  * \param[in] datawriter The local datawriter
644  * \param[in] dp_key The peer's participant key
645  * \param[in] dr_qos The peer's Qos policy
646  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
647  *
648  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
649  */
650 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
651 DDS_DataWriter_add_peer(DDS_DataWriter *const datawriter,
652  const DDS_BuiltinTopicKey_t *const dp_key,
653  const struct DDS_DataReaderQos *const dr_qos,
654  RTI_INT32 entity_id);
655 
656 /*ci
657  * \brief Add a remote DDS DataWriter with the entity_id as a peer to a local
658  * DDS Datareader
659  *
660  * \param[in] datareader The local datareader
661  * \param[in] dp_key The peer's participant key
662  * \param[in] dw_qos The peer's Qos policy
663  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
664  *
665  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
666  */
667 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
668 DDS_DataReader_add_peer(DDS_DataReader *const datareader,
669  const DDS_BuiltinTopicKey_t *const dp_key,
670  const struct DDS_DataWriterQos *const dw_qos,
671  RTI_INT32 entity_id);
672 
673 #endif
674 
675 #ifdef __cplusplus
676 } /* extern "C" */
677 #endif
678 
679 
680 #endif /* dds_c_discovery_h */

RTI Connext DDS Micro Version 2.4.10 Copyright © Fri Jun 30 2017 Real-Time Innovations, Inc