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

RTI Connext DDS Micro Version 2.4.6 Copyright © Mon Jan 25 2016 Real-Time Innovations, Inc