Skip to content

Commit 4a3f7ba

Browse files
cferreiragonzEugenioCollado
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]>
1 parent 29ff526 commit 4a3f7ba

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
@@ -204,7 +204,7 @@ ParticipantProxyData* PDPClient::createParticipantProxyData(
204204
ParticipantProxyData* pdata = add_participant_proxy_data(participant_data.m_guid, is_server, &participant_data);
205205
if (pdata != nullptr)
206206
{
207-
// Clients only assert its server lifeliness, other clients liveliness is provided
207+
// Clients only assert its server liveliness, other clients liveliness is provided
208208
// through server's PDP discovery data
209209
if (is_server)
210210
{

src/cpp/rtps/participant/RTPSParticipantImpl.cpp

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

3011-
m_network_Factory.getDefaultMetatrafficMulticastLocators(att.builtin.metatrafficMulticastLocatorList,
3012-
metatraffic_multicast_port);
3013-
m_network_Factory.NormalizeLocators(att.builtin.metatrafficMulticastLocatorList);
3011+
if (m_att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol::CLIENT &&
3012+
m_att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol::SUPER_CLIENT)
3013+
{
3014+
m_network_Factory.getDefaultMetatrafficMulticastLocators(att.builtin.metatrafficMulticastLocatorList,
3015+
metatraffic_multicast_port);
3016+
m_network_Factory.NormalizeLocators(att.builtin.metatrafficMulticastLocatorList);
3017+
}
30143018

30153019
m_network_Factory.getDefaultMetatrafficUnicastLocators(att.builtin.metatrafficUnicastLocatorList,
30163020
metatraffic_unicast_port_);

test/unittest/dds/participant/ParticipantTests.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,28 @@ TEST(ParticipantTests, SimpleParticipantRemoteServerListConfiguration)
918918
EXPECT_EQ(ReturnCode_t::RETCODE_OK, DomainParticipantFactory::get_instance()->delete_participant(participant));
919919
}
920920

921+
/**
922+
* Test that checks a CLIENT participant is not initialized with builtin metatrafficMulticastLocators.
923+
*/
924+
TEST(ParticipantTests, NoBuiltinMetatrafficMulticastForClients)
925+
{
926+
DomainParticipantQos qos;
927+
qos.wire_protocol().builtin.discovery_config.discoveryProtocol = fastdds::rtps::DiscoveryProtocol::CLIENT;
928+
DomainParticipant* participant = DomainParticipantFactory::get_instance()->create_participant(
929+
(uint32_t)GET_PID() % 230, qos);
930+
ASSERT_NE(nullptr, participant);
931+
932+
fastdds::rtps::RTPSParticipantAttributes attributes;
933+
get_rtps_attributes(participant, attributes);
934+
EXPECT_EQ(attributes.builtin.discovery_config.discoveryProtocol, fastdds::rtps::DiscoveryProtocol::CLIENT);
935+
EXPECT_EQ(attributes.builtin.metatrafficMulticastLocatorList.size(), 0);
936+
937+
DomainParticipantQos result_qos = participant->get_qos();
938+
EXPECT_EQ(RETCODE_OK, participant->set_qos(result_qos));
939+
940+
EXPECT_EQ(RETCODE_OK, DomainParticipantFactory::get_instance()->delete_participant(participant));
941+
}
942+
921943

922944
/**
923945
* 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)