|
28 | 28 | #include <fastdds/dds/core/ReturnCode.hpp>
|
29 | 29 | #include <fastdds/dds/domain/DomainParticipant.hpp>
|
30 | 30 | #include <fastdds/dds/log/Log.hpp>
|
| 31 | +#include <fastdds/dds/subscriber/DataReader.hpp> |
31 | 32 | #include <fastdds/dds/publisher/DataWriter.hpp>
|
32 | 33 | #include <fastdds/dds/publisher/Publisher.hpp>
|
33 | 34 | #include <fastdds/dds/publisher/PublisherListener.hpp>
|
@@ -1517,6 +1518,34 @@ ReturnCode_t DataWriterImpl::set_sample_prefilter(
|
1517 | 1518 | return RETCODE_OK;
|
1518 | 1519 | }
|
1519 | 1520 |
|
| 1521 | +ReturnCode_t DataWriterImpl::set_related_datareader( |
| 1522 | + const DataReader* related_reader) |
| 1523 | +{ |
| 1524 | + ReturnCode_t ret = RETCODE_ILLEGAL_OPERATION; |
| 1525 | + |
| 1526 | + if (nullptr == writer_) |
| 1527 | + { |
| 1528 | + if (nullptr != related_reader && |
| 1529 | + related_reader->guid() != c_Guid_Unknown) |
| 1530 | + { |
| 1531 | + if (related_reader->guid().guidPrefix == guid_.guidPrefix) |
| 1532 | + { |
| 1533 | + related_datareader_key_ = related_reader->guid(); |
| 1534 | + ret = RETCODE_OK; |
| 1535 | + } |
| 1536 | + else |
| 1537 | + { |
| 1538 | + ret = RETCODE_PRECONDITION_NOT_MET; |
| 1539 | + } |
| 1540 | + } |
| 1541 | + else |
| 1542 | + { |
| 1543 | + ret = RETCODE_BAD_PARAMETER; |
| 1544 | + } |
| 1545 | + } |
| 1546 | + return ret; |
| 1547 | +} |
| 1548 | + |
1520 | 1549 | bool DataWriterImpl::deadline_timer_reschedule()
|
1521 | 1550 | {
|
1522 | 1551 | assert(qos_.deadline().period != dds::c_TimeInfinite);
|
@@ -1730,6 +1759,9 @@ ReturnCode_t DataWriterImpl::get_publication_builtin_topic_data(
|
1730 | 1759 | publisher_->get_participant_impl()->fill_type_information(type_, publication_data.type_information);
|
1731 | 1760 | publication_data.representation = qos_.representation();
|
1732 | 1761 |
|
| 1762 | + // RPC over DDS |
| 1763 | + publication_data.related_datareader_key = related_datareader_key_; |
| 1764 | + |
1733 | 1765 | // eProsima extensions
|
1734 | 1766 |
|
1735 | 1767 | publication_data.disable_positive_acks = qos_.reliable_writer_qos().disable_positive_acks;
|
|
0 commit comments