|
26 | 26 | #include <fastdds/dds/domain/qos/RequesterQos.hpp> |
27 | 27 | #include <fastdds/dds/log/Log.hpp> |
28 | 28 | #include <fastdds/dds/rpc/RequestInfo.hpp> |
| 29 | +#include <fastdds/dds/topic/ContentFilteredTopic.hpp> |
29 | 30 | #include <fastdds/rtps/common/Guid.hpp> |
30 | 31 | #include <fastdds/rtps/common/SequenceNumber.hpp> |
31 | 32 | #include <fastdds/rtps/common/WriteParams.hpp> |
@@ -248,16 +249,24 @@ ReturnCode_t RequesterImpl::create_dds_entities( |
248 | 249 | return RETCODE_ERROR; |
249 | 250 | } |
250 | 251 |
|
| 252 | + ContentFilteredTopic* reply_topic = service_->get_reply_filtered_topic(); |
| 253 | + |
251 | 254 | requester_reader_ = |
252 | 255 | service_->get_subscriber()->create_datareader( |
253 | | - service_->get_reply_filtered_topic(), qos.reader_qos, this, StatusMask::subscription_matched()); |
| 256 | + reply_topic, qos.reader_qos, this, StatusMask::subscription_matched()); |
254 | 257 |
|
255 | 258 | if (!requester_reader_) |
256 | 259 | { |
257 | 260 | EPROSIMA_LOG_ERROR(REQUESTER, "Error creating reply reader"); |
258 | 261 | return RETCODE_ERROR; |
259 | 262 | } |
260 | 263 |
|
| 264 | + // Set the content filter signature to be different from the one used in other requesters |
| 265 | + std::stringstream guid; |
| 266 | + guid << requester_reader_->guid(); |
| 267 | + std::vector<std::string> expression_parameters; |
| 268 | + reply_topic->set_filter_expression(guid.str(), expression_parameters); |
| 269 | + |
261 | 270 | // Set the related entity key on both entities |
262 | 271 | requester_reader_->set_related_datawriter(requester_writer_); |
263 | 272 | requester_writer_->set_related_datareader(requester_reader_); |
|
0 commit comments