Skip to content

Commit

Permalink
Removing unnecessary locators when detecting intraprocess only usecase (
Browse files Browse the repository at this point in the history
#917)

* Clearing locators when detecting intraprocess only config

* Adding is_intraprocess_only() method to RTPSParticipantImpl
  • Loading branch information
MiguelCompany authored Feb 3, 2020
1 parent 04c21f7 commit 844eb7f
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 @@ -70,6 +71,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 @@ -97,6 +107,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 @@ -246,6 +257,13 @@ RTPSParticipantImpl::RTPSParticipantImpl(
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, false);
createReceiverResources(m_att.builtin.metatrafficUnicastLocatorList, 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 @@ -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 844eb7f

Please sign in to comment.