Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ddsrouter_core/include/ddsrouter_core/types/dds/DomainId.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class DomainId
DDSROUTER_CORE_DllAPI bool operator ==(
const DomainId& other) const noexcept;

DDSROUTER_CORE_DllAPI operator DomainIdType() const noexcept;

protected:

//! Value of Fast DDS Domain ID
Expand Down
37 changes: 9 additions & 28 deletions ddsrouter_core/src/cpp/core/ParticipantFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@
#include <participant/implementations/auxiliar/EchoParticipant.hpp>
#include <participant/implementations/auxiliar/BlankParticipant.hpp>
#include <participant/implementations/rtps/SimpleParticipant.hpp>
#include <participant/implementations/rtps/LocalDiscoveryServerParticipant.hpp>
#include <participant/implementations/rtps/WanDiscoveryServerParticipant.hpp>
#include <participant/implementations/rtps/WanInitialPeersParticipant.hpp>
#include <participant/implementations/rtps/InitialPeersParticipant.hpp>
#include <participant/implementations/rtps/DiscoveryServerParticipant.hpp>

namespace eprosima {
namespace ddsrouter {
Expand All @@ -54,11 +53,11 @@ std::shared_ptr<IParticipant> ParticipantFactory::create_participant(

case ParticipantKind::echo:
// EchoParticipant
return std::make_shared<EchoParticipant>((*participant_configuration), payload_pool, discovery_database);
return std::make_shared<EchoParticipant>(participant_configuration, payload_pool, discovery_database);

case ParticipantKind::dummy:
// DummyParticipant
return std::make_shared<DummyParticipant>((*participant_configuration), payload_pool, discovery_database);
return std::make_shared<DummyParticipant>(participant_configuration, payload_pool, discovery_database);

case ParticipantKind::simple_rtps:
// Simple RTPS Participant
Expand All @@ -74,30 +73,12 @@ std::shared_ptr<IParticipant> ParticipantFactory::create_participant(
}

return std::make_shared<rtps::SimpleParticipant> (
(*conf_),
conf_,
payload_pool,
discovery_database);
}

case ParticipantKind::local_discovery_server:
// Discovery Server RTPS Participant
{
std::shared_ptr<configuration::DiscoveryServerParticipantConfiguration> conf_ =
std::dynamic_pointer_cast<configuration::DiscoveryServerParticipantConfiguration>(
participant_configuration);
if (!conf_)
{
throw utils::ConfigurationException(
utils::Formatter() << "Configuration from Participant: " << participant_configuration->id << " is not for Participant Kind: " <<
participant_configuration->kind);
}

return std::make_shared<rtps::LocalDiscoveryServerParticipant> (
(*conf_),
payload_pool,
discovery_database);
}

case ParticipantKind::wan_discovery_server:
// Discovery Server RTPS Participant
{
Expand All @@ -111,8 +92,8 @@ std::shared_ptr<IParticipant> ParticipantFactory::create_participant(
participant_configuration->kind);
}

return std::make_shared<rtps::WanDiscoveryServerParticipant> (
(*conf_),
return std::make_shared<rtps::DiscoveryServerParticipant> (
conf_,
payload_pool,
discovery_database);
}
Expand All @@ -130,8 +111,8 @@ std::shared_ptr<IParticipant> ParticipantFactory::create_participant(
participant_configuration->kind);
}

return std::make_shared<rtps::WanInitialPeersParticipant> (
(*conf_),
return std::make_shared<rtps::InitialPeersParticipant> (
conf_,
payload_pool,
discovery_database);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,24 @@
// limitations under the License.

/**
* @file BaseParticipant.ipp
* @file BaseParticipant.cpp
*/

#ifndef __SRC_DDSROUTERCORE_PARTICIPANT_IMPLEMENTATIONS_AUXILIAR_BASEPARTICIPANT_IMPL_IPP_
#define __SRC_DDSROUTERCORE_PARTICIPANT_IMPLEMENTATIONS_AUXILIAR_BASEPARTICIPANT_IMPL_IPP_

#include <memory>

#include <ddsrouter_core/types/participant/ParticipantKind.hpp>
#include <ddsrouter_utils/exception/InitializationException.hpp>
#include <reader/implementations/auxiliar/BaseReader.hpp>
#include <ddsrouter_utils/Log.hpp>
#include <ddsrouter_core/types/participant/ParticipantKind.hpp>
#include <participant/implementations/auxiliar/BaseParticipant.hpp>
#include <reader/implementations/auxiliar/BaseReader.hpp>
#include <writer/implementations/auxiliar/BaseWriter.hpp>

namespace eprosima {
namespace ddsrouter {
namespace core {

template <class ConfigurationType>
BaseParticipant<ConfigurationType>::BaseParticipant(
const ConfigurationType participant_configuration,
BaseParticipant::BaseParticipant(
std::shared_ptr<configuration::ParticipantConfiguration> participant_configuration,
std::shared_ptr <PayloadPool> payload_pool,
std::shared_ptr <DiscoveryDatabase> discovery_database)
: configuration_(participant_configuration)
Expand All @@ -43,8 +40,7 @@ BaseParticipant<ConfigurationType>::BaseParticipant(
logDebug(DDSROUTER_TRACK, "Creating Participant " << *this << ".");
}

template <class ConfigurationType>
BaseParticipant<ConfigurationType>::~BaseParticipant()
BaseParticipant::~BaseParticipant()
{
logDebug(DDSROUTER_TRACK, "Destroying Participant " << *this << ".");

Expand All @@ -63,32 +59,28 @@ BaseParticipant<ConfigurationType>::~BaseParticipant()
logDebug(DDSROUTER_TRACK, "Participant " << *this << " destroyed.");
}

template <class ConfigurationType>
types::ParticipantId BaseParticipant<ConfigurationType>::id() const noexcept
types::ParticipantId BaseParticipant::id() const noexcept
{
std::lock_guard <std::recursive_mutex> lock(mutex_);

return configuration_.id;
return configuration_->id;
}

template <class ConfigurationType>
types::ParticipantKind BaseParticipant<ConfigurationType>::kind() const noexcept
types::ParticipantKind BaseParticipant::kind() const noexcept
{
std::lock_guard <std::recursive_mutex> lock(mutex_);

return configuration_.kind;
return configuration_->kind;
}

template <class ConfigurationType>
bool BaseParticipant<ConfigurationType>::is_repeater() const noexcept
bool BaseParticipant::is_repeater() const noexcept
{
std::lock_guard <std::recursive_mutex> lock(mutex_);

return configuration_.is_repeater;
return configuration_->is_repeater;
}

template <class ConfigurationType>
std::shared_ptr<IWriter> BaseParticipant<ConfigurationType>::create_writer(
std::shared_ptr<IWriter> BaseParticipant::create_writer(
types::RealTopic topic)
{
std::lock_guard <std::recursive_mutex> lock(mutex_);
Expand All @@ -111,8 +103,7 @@ std::shared_ptr<IWriter> BaseParticipant<ConfigurationType>::create_writer(
return new_writer;
}

template <class ConfigurationType>
std::shared_ptr<IReader> BaseParticipant<ConfigurationType>::create_reader(
std::shared_ptr<IReader> BaseParticipant::create_reader(
types::RealTopic topic)
{
std::lock_guard <std::recursive_mutex> lock(mutex_);
Expand All @@ -135,8 +126,7 @@ std::shared_ptr<IReader> BaseParticipant<ConfigurationType>::create_reader(
return new_reader;
}

template <class ConfigurationType>
void BaseParticipant<ConfigurationType>::delete_writer(
void BaseParticipant::delete_writer(
std::shared_ptr <IWriter> writer) noexcept
{
std::lock_guard <std::recursive_mutex> lock(mutex_);
Expand All @@ -152,8 +142,7 @@ void BaseParticipant<ConfigurationType>::delete_writer(
}
}

template <class ConfigurationType>
void BaseParticipant<ConfigurationType>::delete_reader(
void BaseParticipant::delete_reader(
std::shared_ptr <IReader> reader) noexcept
{
std::lock_guard <std::recursive_mutex> lock(mutex_);
Expand All @@ -169,37 +158,31 @@ void BaseParticipant<ConfigurationType>::delete_reader(
}
}

template <class ConfigurationType>
void BaseParticipant<ConfigurationType>::delete_writer_(
void BaseParticipant::delete_writer_(
std::shared_ptr <IWriter>) noexcept
{
// It does nothing. Override this method so it has functionality.
}

template <class ConfigurationType>
void BaseParticipant<ConfigurationType>::delete_reader_(
void BaseParticipant::delete_reader_(
std::shared_ptr <IReader>) noexcept
{
// It does nothing. Override this method so it has functionality.
}

template <class ConfigurationType>
types::ParticipantId BaseParticipant<ConfigurationType>::id_nts_() const noexcept
types::ParticipantId BaseParticipant::id_nts_() const noexcept
{
return configuration_.id;
return configuration_->id;
}

template <class ConfigurationType>
std::ostream& operator <<(
std::ostream& os,
const BaseParticipant<ConfigurationType>& participant)
const BaseParticipant& participant)
{
os << "{" << participant.id() << ";" << participant.configuration_.kind << "}";
os << "{" << participant.id() << ";" << participant.configuration_->kind << "}";
return os;
}

} /* namespace core */
} /* namespace ddsrouter */
} /* namespace eprosima */

#endif /* __SRC_DDSROUTERCORE_PARTICIPANT_IMPLEMENTATIONS_AUXILIAR_BASEPARTICIPANT_IMPL_IPP_ */
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,9 @@ namespace core {
*
* This class stores every Endpoint created by this Participant.
*/
template <class ConfigurationType>
class BaseParticipant : public IParticipant
{

// Force ConfigurationType to be subclass of ParticipantConfiguration
FORCE_TEMPLATE_SUBCLASS(configuration::ParticipantConfiguration, ConfigurationType);

public:

/**
Expand All @@ -57,7 +53,7 @@ class BaseParticipant : public IParticipant
* @param discovery_database DDS Router shared Discovery Database
*/
BaseParticipant(
const ConfigurationType participant_configuration,
std::shared_ptr<configuration::ParticipantConfiguration> participant_configuration,
std::shared_ptr<PayloadPool> payload_pool,
std::shared_ptr<DiscoveryDatabase> discovery_database);

Expand Down Expand Up @@ -194,7 +190,7 @@ class BaseParticipant : public IParticipant
types::ParticipantId id_nts_() const noexcept;

//! Participant configuration
ConfigurationType configuration_;
std::shared_ptr<configuration::ParticipantConfiguration> configuration_;

//! DDS Router shared Payload Pool
std::shared_ptr<PayloadPool> payload_pool_;
Expand All @@ -212,10 +208,9 @@ class BaseParticipant : public IParticipant
mutable std::recursive_mutex mutex_;

// Allow operator << to use private variables
template <class C>
friend std::ostream& operator <<(
std::ostream&,
const BaseParticipant<C>&);
const BaseParticipant&);
};

/**
Expand All @@ -224,16 +219,12 @@ class BaseParticipant : public IParticipant
* This method is merely a to_string of a BaseParticipant definition.
* It serialize the Id and kind
*/
template <class ConfigurationType>
std::ostream& operator <<(
std::ostream& os,
const BaseParticipant<ConfigurationType>& track);
const BaseParticipant& part);

} /* namespace core */
} /* namespace ddsrouter */
} /* namespace eprosima */

// Include implementation template file
#include <participant/implementations/auxiliar/impl/BaseParticipant.ipp>

#endif /* __SRC_DDSROUTERCORE_PARTICIPANT_IMPLEMENTATIONS_AUXILIAR_BASEPARTICIPANT_HPP_ */
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ std::mutex DummyParticipant::static_mutex_;
std::map<ParticipantId, DummyParticipant*> DummyParticipant::participants_;

DummyParticipant::DummyParticipant(
const configuration::ParticipantConfiguration participant_configuration,
std::shared_ptr<configuration::ParticipantConfiguration> participant_configuration,
std::shared_ptr<PayloadPool> payload_pool,
std::shared_ptr<DiscoveryDatabase> discovery_database)
: BaseParticipant(participant_configuration, payload_pool, discovery_database)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ namespace core {
*
* This Participant is used for Testing, as it could mock a DDS real network.
*/
class DummyParticipant : public BaseParticipant<configuration::ParticipantConfiguration>
class DummyParticipant : public BaseParticipant
{
public:

Expand All @@ -50,7 +50,7 @@ class DummyParticipant : public BaseParticipant<configuration::ParticipantConfig
* the DDSRouter.
*/
DummyParticipant(
const configuration::ParticipantConfiguration participant_configuration,
std::shared_ptr<configuration::ParticipantConfiguration> participant_configuration,
std::shared_ptr<PayloadPool> payload_pool,
std::shared_ptr<DiscoveryDatabase> discovery_database);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace core {
/**
* Concrete Participant that prints in stdout each message that arrives.
*/
class EchoParticipant : public BaseParticipant<configuration::ParticipantConfiguration>
class EchoParticipant : public BaseParticipant
{
public:

Expand Down
Loading