Skip to content

Commit

Permalink
Removing unnecessary locators when detecting intraprocess only usecase (
Browse files Browse the repository at this point in the history
  • Loading branch information
MiguelCompany committed Jan 28, 2020
1 parent 1e78f83 commit 10261df
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
18 changes: 18 additions & 0 deletions 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 @@ -69,6 +70,15 @@ static EntityId_t TrustedWriter(const EntityId_t& reader)
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)
{
// This is a completely made up rule
Expand All @@ -95,6 +105,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 Down Expand Up @@ -235,6 +246,13 @@ RTPSParticipantImpl::RTPSParticipantImpl(
logInfo(RTPS_PARTICIPANT, m_att.getName() << " Created with NO default Unicast Locator List, adding Locators:"
<< m_att.defaultUnicastLocatorList);
}

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

createReceiverResources(m_att.builtin.metatrafficMulticastLocatorList, true);
createReceiverResources(m_att.builtin.metatrafficUnicastLocatorList, true);
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 @@ -281,6 +281,11 @@ class RTPSParticipantImpl

WLP* wlp();

bool is_intraprocess_only() const
{
return is_intraprocess_only_;
}

bool get_remote_writer_info(const GUID_t& writerGuid, WriterProxyData& returnedInfo);

bool get_remote_reader_info(const GUID_t& readerGuid, ReaderProxyData& returnedInfo);
Expand Down Expand Up @@ -420,6 +425,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 10261df

Please sign in to comment.