Skip to content

Commit a5d913f

Browse files
mergify[bot]cferreiragonzMiguelCompany
authored
Improve PDPClients initialization (#5459) (#5507)
* 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]> * Fix backport namespaces Signed-off-by: Miguel Company <[email protected]> * Fix build Signed-off-by: cferreiragonz <[email protected]> --------- Signed-off-by: cferreiragonz <[email protected]> Signed-off-by: Miguel Company <[email protected]> Co-authored-by: Carlos Ferreira González <[email protected]> Co-authored-by: Miguel Company <[email protected]>
1 parent c6bb8a4 commit a5d913f

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
@@ -3036,9 +3036,13 @@ void RTPSParticipantImpl::get_default_metatraffic_locators(
30363036
{
30373037
uint32_t metatraffic_multicast_port = att.port.getMulticastPort(domain_id_);
30383038

3039-
m_network_Factory.getDefaultMetatrafficMulticastLocators(att.builtin.metatrafficMulticastLocatorList,
3040-
metatraffic_multicast_port);
3041-
m_network_Factory.NormalizeLocators(att.builtin.metatrafficMulticastLocatorList);
3039+
if (m_att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol::CLIENT &&
3040+
m_att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol::SUPER_CLIENT)
3041+
{
3042+
m_network_Factory.getDefaultMetatrafficMulticastLocators(att.builtin.metatrafficMulticastLocatorList,
3043+
metatraffic_multicast_port);
3044+
m_network_Factory.NormalizeLocators(att.builtin.metatrafficMulticastLocatorList);
3045+
}
30423046

30433047
m_network_Factory.getDefaultMetatrafficUnicastLocators(att.builtin.metatrafficUnicastLocatorList,
30443048
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 = fastrtps::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+
fastrtps::rtps::RTPSParticipantAttributes attributes;
933+
get_rtps_attributes(participant, attributes);
934+
EXPECT_EQ(attributes.builtin.discovery_config.discoveryProtocol, fastrtps::rtps::DiscoveryProtocol::CLIENT);
935+
EXPECT_EQ(attributes.builtin.metatrafficMulticastLocatorList.size(), 0);
936+
937+
DomainParticipantQos result_qos = participant->get_qos();
938+
EXPECT_EQ(ReturnCode_t::RETCODE_OK, participant->set_qos(result_qos));
939+
940+
EXPECT_EQ(ReturnCode_t::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)