Skip to content

Commit

Permalink
Removing unnecessary locators when detecting intraprocess only usecase
Browse files Browse the repository at this point in the history
This is a port of #917 from 1.9.x

* Clearing locators when detecting intraprocess only config

* Adding is_intraprocess_only() method to RTPSParticipantImpl
  • Loading branch information
IkerLuengo committed Feb 28, 2020
1 parent cab342c commit 5b47745
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/cpp/rtps/participant/RTPSParticipantImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
#include <algorithm>

#include <fastrtps/log/Log.h>
#include <fastrtps/xmlparser/XMLProfileManager.h>

namespace eprosima {
namespace fastrtps {
Expand All @@ -73,6 +74,15 @@ static EntityId_t TrustedWriter(
c_EntityId_Unknown;
}

static bool should_be_intraprocess_only(
const RTPSParticipantAttributes& att)
{
return
xmlparser::XMLProfileManager::library_settings().intraprocess_delivery == INTRAPROCESS_FULL &&
att.builtin.discovery_config.ignoreParticipantFlags ==
(ParticipantFilteringFlags::FILTER_DIFFERENT_HOST | ParticipantFilteringFlags::FILTER_DIFFERENT_PROCESS);
}

Locator_t& RTPSParticipantImpl::applyLocatorAdaptRule(
Locator_t& loc)
{
Expand Down Expand Up @@ -101,6 +111,7 @@ RTPSParticipantImpl::RTPSParticipantImpl(
, mp_participantListener(plisten)
, mp_userParticipant(par)
, mp_mutex(new std::recursive_mutex())
, is_intraprocess_only_(should_be_intraprocess_only(PParam))
{
// Builtin transport by default
if (PParam.useBuiltinTransports)
Expand All @@ -125,7 +136,7 @@ RTPSParticipantImpl::RTPSParticipantImpl(
{
logError(RTPS_PARTICIPANT,
"Participant " << m_att.getName() << " with GUID " << m_guid
<< " tries to use discovery server over TCP without providing a proper listening port");
<< " tries to use discovery server over TCP without providing a proper listening port");
}
}
default:
Expand Down Expand Up @@ -249,6 +260,13 @@ RTPSParticipantImpl::RTPSParticipantImpl(
}
#endif

if (is_intraprocess_only())
{
m_att.builtin.metatrafficUnicastLocatorList.clear();
m_att.defaultUnicastLocatorList.clear();
m_att.defaultMulticastLocatorList.clear();
}

createReceiverResources(m_att.builtin.metatrafficMulticastLocatorList, true, false);
createReceiverResources(m_att.builtin.metatrafficUnicastLocatorList, true, false);
createReceiverResources(m_att.defaultUnicastLocatorList, true, false);
Expand Down
8 changes: 8 additions & 0 deletions src/cpp/rtps/participant/RTPSParticipantImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,11 @@ class RTPSParticipantImpl

fastdds::dds::builtin::TypeLookupManager* typelookup_manager() const;

bool is_intraprocess_only() const
{
return is_intraprocess_only_;
}

NetworkFactory& network_factory()
{
return m_network_Factory;
Expand Down Expand Up @@ -511,6 +516,9 @@ class RTPSParticipantImpl
//!Participant Mutex
std::recursive_mutex* mp_mutex;

//!Will this participant use intraprocess only?
bool is_intraprocess_only_;

/*
* Flow controllers for this participant.
*/
Expand Down

0 comments on commit 5b47745

Please sign in to comment.