diff --git a/ddsrecorder/src/cpp/command_receiver/CommandReceiver.cpp b/ddsrecorder/src/cpp/command_receiver/CommandReceiver.cpp index 4a0c0cef6..a282e74cc 100644 --- a/ddsrecorder/src/cpp/command_receiver/CommandReceiver.cpp +++ b/ddsrecorder/src/cpp/command_receiver/CommandReceiver.cpp @@ -140,6 +140,17 @@ bool CommandReceiver::init() // CREATE THE PARTICIPANT pqos.name("DdsRecorderCommandReceiver"); + + // Set app properties + pqos.properties().properties().emplace_back( + "fastdds.application.id", + participant_configuration_->app_id, + "true"); + pqos.properties().properties().emplace_back( + "fastdds.application.metadata", + participant_configuration_->app_metadata, + "true"); + participant_ = DomainParticipantFactory::get_instance()->create_participant(domain_, pqos); if (participant_ == nullptr) diff --git a/ddsrecorder_yaml/src/cpp/recorder/YamlReaderConfiguration.cpp b/ddsrecorder_yaml/src/cpp/recorder/YamlReaderConfiguration.cpp index a8f8be7f9..5588d6e10 100644 --- a/ddsrecorder_yaml/src/cpp/recorder/YamlReaderConfiguration.cpp +++ b/ddsrecorder_yaml/src/cpp/recorder/YamlReaderConfiguration.cpp @@ -69,12 +69,17 @@ void RecorderConfiguration::load_ddsrecorder_configuration_( // Create Simple Participant Configuration simple_configuration = std::make_shared(); simple_configuration->id = "SimpleRecorderParticipant"; + simple_configuration->app_id = "DDS_RECORDER"; + simple_configuration->app_metadata = ""; simple_configuration->is_repeater = false; ///// // Create Recorder Participant Configuration recorder_configuration = std::make_shared(); recorder_configuration->id = "RecorderRecorderParticipant"; + recorder_configuration->app_id = "DDS_RECORDER"; + // TODO: fill metadata field once its content has been defined. + recorder_configuration->app_metadata = ""; recorder_configuration->is_repeater = false; ///// diff --git a/ddsrecorder_yaml/src/cpp/replayer/YamlReaderConfiguration.cpp b/ddsrecorder_yaml/src/cpp/replayer/YamlReaderConfiguration.cpp index 556b3c228..7966c9b7b 100644 --- a/ddsrecorder_yaml/src/cpp/replayer/YamlReaderConfiguration.cpp +++ b/ddsrecorder_yaml/src/cpp/replayer/YamlReaderConfiguration.cpp @@ -89,6 +89,8 @@ void ReplayerConfiguration::load_ddsreplayer_configuration_( // WARNING: Replayer configuration must have been parsed beforehand mcap_reader_configuration = std::make_shared(); mcap_reader_configuration->id = "McapReaderParticipant"; + mcap_reader_configuration->app_id = "DDS_REPLAYER"; + mcap_reader_configuration->app_metadata = ""; mcap_reader_configuration->is_repeater = false; mcap_reader_configuration->begin_time = begin_time; mcap_reader_configuration->end_time = end_time; @@ -99,6 +101,9 @@ void ReplayerConfiguration::load_ddsreplayer_configuration_( // Create Replayer Participant Configuration replayer_configuration = std::make_shared(); replayer_configuration->id = "ReplayerParticipant"; + replayer_configuration->app_id = "DDS_REPLAYER"; + // TODO: fill metadata field once its content has been defined. + replayer_configuration->app_metadata = ""; replayer_configuration->is_repeater = false; ///// diff --git a/ddsreplayer/src/cpp/tool/DdsReplayer.cpp b/ddsreplayer/src/cpp/tool/DdsReplayer.cpp index 373b92f6b..8bd209ec3 100644 --- a/ddsreplayer/src/cpp/tool/DdsReplayer.cpp +++ b/ddsreplayer/src/cpp/tool/DdsReplayer.cpp @@ -101,6 +101,16 @@ DdsReplayer::DdsReplayer( fastdds::dds::DomainParticipantQos pqos; pqos.name("DdsReplayer_dynTypesPublisher"); + // Set app properties + pqos.properties().properties().emplace_back( + "fastdds.application.id", + configuration.replayer_configuration->app_id, + "true"); + pqos.properties().properties().emplace_back( + "fastdds.application.metadata", + configuration.replayer_configuration->app_metadata, + "true"); + // Set as server in TypeLookup service pqos.wire_protocol().builtin.typelookup_config.use_client = false; pqos.wire_protocol().builtin.typelookup_config.use_server = true; diff --git a/docs/rst/notes/forthcoming_version.rst b/docs/rst/notes/forthcoming_version.rst index 9ade025c4..70c93c606 100644 --- a/docs/rst/notes/forthcoming_version.rst +++ b/docs/rst/notes/forthcoming_version.rst @@ -15,6 +15,7 @@ Next release will include the following **DDS Recorder & Replay internal adjustm * Store *DDS Record & Replay* version in metadata record of the generated MCAP files. * Move dynamic types storage from metadata to attachments MCAP section. * Store schemas in OMG IDL format (instead of ROS 2 msg). +* Set `app_id` and `app_metadata` attributes on *DDS Record & Replay* participants. .. warning::