Skip to content

Commit f826362

Browse files
cferreiragonzmergify[bot]
authored andcommitted
Improve PDPClients initialization (#5459)
* Refs #21433: Add Test Signed-off-by: cferreiragonz <[email protected]> * Refs #21433: Avoid using multicast metatraffic for CLIENTS & SUPER_CLIENTS Signed-off-by: cferreiragonz <[email protected]> * Refs #21433: Typo Signed-off-by: cferreiragonz <[email protected]> --------- Signed-off-by: cferreiragonz <[email protected]> (cherry picked from commit 451847c)
1 parent b0e1c69 commit f826362

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

src/cpp/rtps/builtin/discovery/participant/PDPClient.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ ParticipantProxyData* PDPClient::createParticipantProxyData(
192192
ParticipantProxyData* pdata = add_participant_proxy_data(participant_data.m_guid, is_server, &participant_data);
193193
if (pdata != nullptr)
194194
{
195-
// Clients only assert its server lifeliness, other clients liveliness is provided
195+
// Clients only assert its server liveliness, other clients liveliness is provided
196196
// through server's PDP discovery data
197197
if (is_server)
198198
{

src/cpp/rtps/participant/RTPSParticipantImpl.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2728,9 +2728,13 @@ void RTPSParticipantImpl::get_default_metatraffic_locators(
27282728
{
27292729
uint32_t metatraffic_multicast_port = att.port.getMulticastPort(domain_id_);
27302730

2731-
m_network_Factory.getDefaultMetatrafficMulticastLocators(att.builtin.metatrafficMulticastLocatorList,
2732-
metatraffic_multicast_port);
2733-
m_network_Factory.NormalizeLocators(att.builtin.metatrafficMulticastLocatorList);
2731+
if (m_att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol::CLIENT &&
2732+
m_att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol::SUPER_CLIENT)
2733+
{
2734+
m_network_Factory.getDefaultMetatrafficMulticastLocators(att.builtin.metatrafficMulticastLocatorList,
2735+
metatraffic_multicast_port);
2736+
m_network_Factory.NormalizeLocators(att.builtin.metatrafficMulticastLocatorList);
2737+
}
27342738

27352739
m_network_Factory.getDefaultMetatrafficUnicastLocators(att.builtin.metatrafficUnicastLocatorList,
27362740
metatraffic_unicast_port_);

test/unittest/dds/participant/ParticipantTests.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,28 @@ TEST(ParticipantTests, SimpleParticipantRemoteServerListConfiguration)
10431043
EXPECT_EQ(RETCODE_OK, DomainParticipantFactory::get_instance()->delete_participant(participant));
10441044
}
10451045

1046+
/**
1047+
* Test that checks a CLIENT participant is not initialized with builtin metatrafficMulticastLocators.
1048+
*/
1049+
TEST(ParticipantTests, NoBuiltinMetatrafficMulticastForClients)
1050+
{
1051+
DomainParticipantQos qos;
1052+
qos.wire_protocol().builtin.discovery_config.discoveryProtocol = fastdds::rtps::DiscoveryProtocol::CLIENT;
1053+
DomainParticipant* participant = DomainParticipantFactory::get_instance()->create_participant(
1054+
(uint32_t)GET_PID() % 230, qos);
1055+
ASSERT_NE(nullptr, participant);
1056+
1057+
fastdds::rtps::RTPSParticipantAttributes attributes;
1058+
get_rtps_attributes(participant, attributes);
1059+
EXPECT_EQ(attributes.builtin.discovery_config.discoveryProtocol, fastdds::rtps::DiscoveryProtocol::CLIENT);
1060+
EXPECT_EQ(attributes.builtin.metatrafficMulticastLocatorList.size(), 0);
1061+
1062+
DomainParticipantQos result_qos = participant->get_qos();
1063+
EXPECT_EQ(RETCODE_OK, participant->set_qos(result_qos));
1064+
1065+
EXPECT_EQ(RETCODE_OK, DomainParticipantFactory::get_instance()->delete_participant(participant));
1066+
}
1067+
10461068

10471069
/**
10481070
* Test that a SIMPLE participant is transformed into a CLIENT if the variable ROS_SUPER_CLIENT is false and into a SUPERCLIENT if it's true.

0 commit comments

Comments
 (0)