FairMQ: MakeTransport to create stand-alone transport for tests.

This commit is contained in:
Alexey Rybalchenko 2017-04-26 13:42:41 +02:00 committed by Mohammad Al-Turany
parent 085de240c2
commit 459b42add2
2 changed files with 39 additions and 0 deletions

View File

@ -923,6 +923,41 @@ shared_ptr<FairMQTransportFactory> FairMQDevice::AddTransport(const string& tran
} }
} }
unique_ptr<FairMQTransportFactory> FairMQDevice::MakeTransport(const string& transport)
{
unique_ptr<FairMQTransportFactory> tr;
if (transport == "zeromq")
{
tr = FairMQ::tools::make_unique<FairMQTransportFactoryZMQ>();
}
else if (transport == "shmem")
{
tr = FairMQ::tools::make_unique<FairMQTransportFactorySHM>();
}
#ifdef NANOMSG_FOUND
else if (transport == "nanomsg")
{
tr = FairMQ::tools::make_unique<FairMQTransportFactoryNN>();
}
#endif
else
{
LOG(ERROR) << "Unavailable transport requested: " << "\"" << transport << "\"" << ". Available are: "
<< "\"zeromq\""
<< "\"shmem\""
#ifdef NANOMSG_FOUND
<< ", \"nanomsg\""
#endif
<< ". Returning nullptr.";
return tr;
}
tr->Initialize(nullptr);
return move(tr);
}
void FairMQDevice::SetTransport(const string& transport) void FairMQDevice::SetTransport(const string& transport)
{ {
if (fTransports.empty()) if (fTransports.empty())

View File

@ -336,6 +336,10 @@ class FairMQDevice : public FairMQStateMachine, public FairMQConfigurable
/// @param transport Transport string ("zeromq"/"nanomsg"/"shmem") /// @param transport Transport string ("zeromq"/"nanomsg"/"shmem")
void SetTransport(const std::string& transport = "zeromq"); void SetTransport(const std::string& transport = "zeromq");
/// Creates stand-alone transport factory
/// @param transport Transport string ("zeromq"/"nanomsg"/"shmem")
static std::unique_ptr<FairMQTransportFactory> MakeTransport(const std::string& transport);
void SetConfig(FairMQProgOptions& config); void SetConfig(FairMQProgOptions& config);
const FairMQProgOptions* GetConfig() const const FairMQProgOptions* GetConfig() const
{ {