RTI Connext DDS Micro  Version 2.4.9
 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_unicast_locator
213  */
214  struct DDS_LocatorSeq unicast_locator;
215 
216  DDSC_CPP_QOS_METHODS(DDS_PublicationBuiltinTopicData)
217 };
218 
219 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_PublicationBuiltinTopicData);
220 
221 /*i \dref_PublicationBuiltinTopicData_INITIALIZER
222  */
223 #define DDS_PublicationBuiltinTopicData_INITIALIZER { \
224  DDS_BuiltinTopicKey_t_INITIALIZER, \
225  DDS_BuiltinTopicKey_t_INITIALIZER, \
226  NULL,\
227  NULL,\
228  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
229  DDS_OWNERSHIP_QOS_POLICY_DEFAULT,\
230  DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT, \
231  DDS_RELIABILITY_QOS_POLICY_DEFAULT,\
232  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
233  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
234  DDS_SEQUENCE_INITIALIZER \
235 }
236 
237 #define T struct DDS_PublicationBuiltinTopicData
238 #define TSeq DDS_PublicationBuiltinTopicDataSeq
239 #define REDA_SEQUENCE_USER_API
240 #include <reda/reda_sequence_decl.h>
241 
242 #define DDS_PublicationBuiltinTopicDataSeq_INITIALIZER \
243 DDS_SEQUENCE_INITIALIZER
244 
245 /*e \dref_SubscriptionBuiltInTopicGroupDocs
246  */
247 
248 /*e \dref_SubscriptionBuiltinTopicData
249  */
250 struct DDSCPPDllExport DDS_SubscriptionBuiltinTopicData
251 {
252  /*e \dref_SubscriptionBuiltinTopicData_key
253  * Key GUID must be first
254  */
256 
257  /*e \dref_SubscriptionBuiltinTopicData_participant_key
258  */
259  struct DDS_BuiltinTopicKey_t participant_key;
260 
261  /*e \dref_SubscriptionBuiltinTopicData_topic_name
262  */
263  char *topic_name;
264 
265  /*e \dref_SubscriptionBuiltinTopicData_type_name
266  */
267  char *type_name;
268 
269  /*e \dref_SubscriptionBuiltinTopicData_deadline
270  */
271  struct DDS_DeadlineQosPolicy deadline;
272 
273  /*e \dref_SubscriptionBuiltinTopicData_ownership
274  */
275  struct DDS_OwnershipQosPolicy ownership;
276 
277  /*e \dref_SubscriptionBuiltinTopicData_reliability
278  */
279  struct DDS_ReliabilityQosPolicy reliability;
280 
281  /*e \dref_SubscriptionBuiltinTopicData_liveliness
282  */
283  struct DDS_LivelinessQosPolicy liveliness;
284 
285  /*e \dref_SubscriptionBuiltinTopicData_durability
286  */
287  struct DDS_DurabilityQosPolicy durability;
288 
289  /*e \dref_SubscriptionBuiltinTopicData_unicast_locator
290  */
291  struct DDS_LocatorSeq unicast_locator;
292 
293  /*e \dref_SubscriptionBuiltinTopicData_multicast_locator
294  */
295  struct DDS_LocatorSeq multicast_locator;
296 
297  DDSC_CPP_QOS_METHODS(DDS_SubscriptionBuiltinTopicData)
298 };
299 
300 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(DDS_SubscriptionBuiltinTopicData);
301 
302 /*i \dref_DDS_SubscriptionBuiltinTopicData_INITIALIZER
303  */
304 #define DDS_SubscriptionBuiltinTopicData_INITIALIZER { \
305  DDS_BuiltinTopicKey_t_INITIALIZER, \
306  DDS_BuiltinTopicKey_t_INITIALIZER, \
307  NULL,\
308  NULL,\
309  DDS_DEADLINE_QOS_POLICY_DEFAULT, \
310  DDS_OWNERSHIP_QOS_POLICY_DEFAULT ,\
311  DDS_RELIABILITY_QOS_POLICY_DEFAULT,\
312  DDS_LIVELINESS_QOS_POLICY_DEFAULT, \
313  DDS_DURABILITY_QOS_POLICY_DEFAULT, \
314  DDS_SEQUENCE_INITIALIZER,\
315  DDS_SEQUENCE_INITIALIZER,\
316 }
317 
318 #define T struct DDS_SubscriptionBuiltinTopicData
319 #define TSeq DDS_SubscriptionBuiltinTopicDataSeq
320 #define REDA_SEQUENCE_USER_API
321 #include <reda/reda_sequence_decl.h>
322 
323 #define DDS_SubscriptionBuiltinTopicDataSeq_INITIALIZER \
324 DDS_SEQUENCE_INITIALIZER
325 
326 struct NDDS_RemoteEntityImpl;
327 typedef struct NDDS_RemoteEntityImpl NDDS_RemoteEntity;
328 struct DDS_RemotePublicationImpl;
329 typedef struct DDS_RemotePublicationImpl DDS_RemotePublication;
330 typedef struct DDS_RemoteSubscriptionImpl DDS_RemoteSubscription;
331 typedef struct DDS_RemoteParticipantImpl DDS_RemoteParticipant;
332 
333 /*ci
334  * \brief Assert a remote participant into a participant
335  *
336  * \details
337  * Assert a remote participant into the participant. This is typically
338  * done as part of the discovery process where a discovery plugin has
339  * discovered a remote participant via some means. It is legal to assert a
340  * remote participant multiple times. If the remote participant does not
341  * yet exist in the participant is_new is set to TRUE, otherwise if it does
342  * exit is_new is set to FALSE. Note that asserting a remote participant
343  * does not automatically enable it. Either \ref
344  * NDDS_DomainParticipant_enable_remote_participant_name or \ref
345  * NDDS_DomainParticipant_enable_remote_participant_guid must be called for
346  * that. Matching of a remote participant's endpoints with local endpoints
347  * does not occur until the remote participant is enabled.
348  *
349  * \param[in] participant The participant to assert the remote participant in
350  * \param[in] data Discovery data for the remote participant
351  * \param[inout] is_new TRUE is the participant already has seen this
352  * participant, FALSE otherwise.
353  *
354  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
355  */
356 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
357 NDDS_DomainParticipant_assert_remote_participant(
358  DDS_DomainParticipant *const participant,
359  struct DDS_ParticipantBuiltinTopicData *const data,
360  DDS_Boolean *const is_new);
361 
362 /*ci
363  * \brief Refresh the liveliness for a remote participant
364  *
365  * \details
366  * This function informs the participant that the remote participant with
367  * a key is still alive. How this is determined is outside the scope of this
368  * function. If a remote participant fails to refresh its liveliness it will
369  * be reset/removed from the participant.
370  *
371  * \param[in] participant The participant to refresh the liveliness in
372  * \param[in] key The key of the remote participant that has refreshed
373  * its liveliness.
374  *
375  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
376  */
377 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
378 NDDS_DomainParticipant_refresh_remote_participant_liveliness(
379  DDS_DomainParticipant * const participant,
380  const struct DDS_BuiltinTopicKey_t *const key);
381 
382 /*ci
383  * \brief Reset a remote participant from a participant
384  *
385  * \details
386  * This function resets a remote participant and all its endpoints in the
387  * participant. When the remote endpoints are reset they are also unmatched
388  * from local endpoints. However, the remote participants and remote endpoints
389  * are not removed from the participant. This feature is typically used in
390  * static discovery where remote participants and endponts are statically
391  * asserted. After they have been reset they can be re-enabled with one the
392  * remote participant enable functions
393  * \ref NDDS_DomainParticipant_enable_remote_participant_guid or
394  * \ref NDDS_DomainParticipant_enable_remote_participant_name
395  *
396  * \param[in] participant The participant to remove the remote participant from
397  * \param[in] key The key of the remote participant to remove
398  *
399  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
400  */
401 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
402 NDDS_DomainParticipant_reset_remote_participant(
403  DDS_DomainParticipant *const participant,
404  const struct DDS_BuiltinTopicKey_t *const key);
405 
406 #ifndef RTI_CERT
407 /*ci
408  * \brief Remove a remote participant from a participant
409  *
410  * \details
411  * This function removes a remote participant and all its endpoints from the
412  * participant. When the remote endpoints are removed they are also unmatched
413  * from local endpoints.
414  *
415  * \param[in] participant The participant to remove the remote participant from
416  * \param[in] key The key of the remote participant to remove
417  *
418  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
419  */
420 SHOULD_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
421 NDDS_DomainParticipant_remove_remote_participant(
422  DDS_DomainParticipant *const participant,
423  const DDS_BuiltinTopicKey_t *const key);
424 #endif /* !RTI_CERT */
425 
426 /*ci
427  * \brief Enable a remote participant by name
428  *
429  * \details
430  * When a remote participant is asserted it is initially in a disabled state.
431  * Any endpoint asserted as part of the remote participant is also disabled
432  * and no matching occur. This function enables a remote participant which
433  * causes matching with local entities. In addition the liveliness timer
434  * is started and the remote participant must maintain its liveliness to
435  * avoid being reset/removed. This function is called when a participant has
436  * been asserted statically and is only known by name. On successful
437  * return the remote participant has been updated with a GUID (taken from the
438  * data input argument) and all its remote endpoints have been matched with
439  * local endpoints.
440  *
441  * \param[in] participant The participant to enable the remote participant in
442  * \param[in] data The discovery data to enable the remote participant
443  * with
444  *
445  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
446  */
447 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
448 NDDS_DomainParticipant_enable_remote_participant_name(
449  DDS_DomainParticipant * const participant,
450  const struct DDS_ParticipantBuiltinTopicData *const data);
451 
452 /*ci
453  * \brief Enable a remote participant by GUID
454  *
455  * \details
456  * When a remote participant is asserted it is initially in a disabled state.
457  * Any endpoint asserted as part of the remote participant is also disabled
458  * and no matching occur. This function enables a remote participant which
459  * causes matching with local entities. In addition the liveliness timer
460  * is started and the remote participant must maintain its liveliness to
461  * avoid being reset/removed. This function is called when participant has
462  * been detected based on discovery data with a valid GUID. On successful
463  * return the remote participant is enabled and all its remote endpoints have
464  * been matched with local endpoints.
465  *
466  * \param[in] participant The participant to enable the remote participant in
467  * \param[in] data The discovery data to enable the remote participant
468  * with
469  *
470  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
471  */
472 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
473 NDDS_DomainParticipant_enable_remote_participant_guid(
474  DDS_DomainParticipant * const participant,
475  const struct DDS_ParticipantBuiltinTopicData *const data);
476 
477 /*ci
478  * \brief Assert a remote publication into a participant
479  *
480  * \details
481  * This function adds a remote publication as an endpoint in a remote
482  * participant. Either the name or the GUID of the participant must be
483  * specified, but not both. The name is used for static discovery
484  * when the GUID of the participant is not known, while the participant
485  * key in the data input is used for dynamic discovery.
486  *
487  * If the remote participant is already enabled the remote publication is
488  * also enabled automatically. Otherwise the remote publication is created
489  * in a disabled state and enabled when the remote participant is enabled.
490  *
491  * \param[in] participant The participant to assert the remote publication in
492  * \param[in] participant_name The name of the remote publication's parent
493  * \param[in] data Discovery data for the remote publication
494  * \param[in] key_kind The type of key for the topic published by the remote
495  * publication
496  *
497  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
498  */
499 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
500 NDDS_DomainParticipant_assert_remote_publication(
501  DDS_DomainParticipant *const participant,
502  const char *const participant_name,
503  const struct DDS_PublicationBuiltinTopicData *const data,
504  NDDS_TypePluginKeyKind key_kind);
505 
506 #ifndef RTI_CERT
507 /*ci
508  * \brief Remove a remote publication from a participant
509  *
510  * \details
511  * This function removes a remote publication as an endpoint from a remote
512  * participant. It is unmatched from local endpoints before removal.
513  *
514  * \param[in] participant The participant to remove the remote publication from
515  * \param[in] key The key for the remote publication that is removed
516  *
517  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
518  */
519 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
520 NDDS_DomainParticipant_remove_remote_publication(
521  DDS_DomainParticipant *const participant,
522  const DDS_BuiltinTopicKey_t *const key);
523 #endif /* !RTI_CERT */
524 
525 /*ci
526  * \brief Assert a remote subscription into a participant
527  *
528  * \details
529  * This function adds a remote subscription as an endpoint in a remote
530  * participant. Either the name or the GUID of the participant must be
531  * specified, but not both. The name is typically used for static discovery
532  * when the GUID of the participant is not known, while the participant
533  * key in the data input is used for dynamic discovery.
534  *
535  * If the remote participant is already enabled the remote subscription is
536  * also enabled automatically. Otherwise the remote subscription is created
537  * in a disabled state and enabled when the remote participant is enabled.
538  *
539  * \param[in] participant The participant to assert the remote publication in
540  * \param[in] participant_name The name of the remote subscription's parent
541  * \param[in] data Discovery data for the remote subscription
542  * \param[in] key_kind The type of key for the topic subscribed to by the
543  * remote subscription
544  *
545  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
546  */
547 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
548 NDDS_DomainParticipant_assert_remote_subscription(
549  DDS_DomainParticipant* const participant,
550  const char *const participant_name,
551  const struct DDS_SubscriptionBuiltinTopicData *const data,
552  NDDS_TypePluginKeyKind key_kind);
553 
554 #ifndef RTI_CERT
555 /*ci
556  * \brief Remove a remote subscription from a participant
557  *
558  * \details
559  * This function removes a remote subscription as an endpoint from a remote
560  * participant. It is unmatched from local endpoints before removal.
561  *
562  * \param[in] participant The participant to remove the remote subscription from
563  * \param[in] key The key for the remote subscription that is removed
564  *
565  * \return DDS_RETCODE_OK on success,one of the standard error codes on failure
566  */
567 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
568 NDDS_DomainParticipant_remove_remote_subscription(
569  DDS_DomainParticipant* const participant,
570  const DDS_BuiltinTopicKey_t* const key);
571 #endif /* !RTI_CERT */
572 
573 #ifndef RTI_CERT
574 
575 /*ci
576  * \brief Remove a remote DDS DataWriter as a peer for a local DDS datareader
577  *
578  * \param[in] datareader The local datareader
579  * \param[in] dp_key The peer's participant key
580  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
581  *
582  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
583  */
584 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
585 DDS_DataReader_remove_peer(DDS_DataReader *const datareader,
586  const DDS_BuiltinTopicKey_t *const dp_key,
587  RTI_INT32 entity_id);
588 
589 /*ci
590  * \brief Remove a remote DDS DataReader as a peer for a local DDS datawriter
591  *
592  * \param[in] datawriter The local datawriter
593  * \param[in] dp_key The peer's participant key
594  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
595  *
596  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
597  */
598 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
599 DDS_DataWriter_remove_peer(DDS_DataWriter *const datawriter,
600  const DDS_BuiltinTopicKey_t *const dp_key,
601  RTI_INT32 entity_id);
602 
603 /*ci
604  * \brief Remove all remote DDS DataWriters with the entity_id as a peer
605  * from all discovered participants
606  *
607  * \param[in] datareader The local datareader
608  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
609  *
610  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
611  */
612 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
613 DDS_DataReader_remove_all_peers(DDS_DataReader *const datareader,
614  RTI_INT32 entity_id);
615 
616 /*ci
617  * \brief Remove all remote DDS DataReaders with the entity_id as a peer
618  * from all discovered participants
619  *
620  * \param[in] datawriter The local datawriter
621  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
622  *
623  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
624  */
625 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
626 DDS_DataWriter_remove_all_peers(DDS_DataWriter *const datawriter,
627  RTI_INT32 entity_id);
628 
629 /*ci
630  * \brief Add a remote DDS DataReader with the entity_id as a peer to a local
631  * DDS DataWriter
632  *
633  * \param[in] datawriter The local datawriter
634  * \param[in] dp_key The peer's participant key
635  * \param[in] dr_qos The peer's Qos policy
636  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
637  *
638  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
639  */
640 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
641 DDS_DataWriter_add_peer(DDS_DataWriter *const datawriter,
642  const DDS_BuiltinTopicKey_t *const dp_key,
643  const struct DDS_DataReaderQos *const dr_qos,
644  RTI_INT32 entity_id);
645 
646 /*ci
647  * \brief Add a remote DDS DataWriter with the entity_id as a peer to a local
648  * DDS Datareader
649  *
650  * \param[in] datareader The local datareader
651  * \param[in] dp_key The peer's participant key
652  * \param[in] dw_qos The peer's Qos policy
653  * \param[in] entity_id The peer's entity id (The prefix is the same as dp_key)
654  *
655  * \return DDS_RETCODE_OK on success, one of the standard error codes on failure
656  */
657 MUST_CHECK_RETURN DDSCDllExport DDS_ReturnCode_t
658 DDS_DataReader_add_peer(DDS_DataReader *const datareader,
659  const DDS_BuiltinTopicKey_t *const dp_key,
660  const struct DDS_DataWriterQos *const dw_qos,
661  RTI_INT32 entity_id);
662 
663 #endif
664 
665 #ifdef __cplusplus
666 } /* extern "C" */
667 #endif
668 
669 
670 #endif /* dds_c_discovery_h */

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