mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-12 16:21:13 +00:00
66 lines
2.3 KiB
C++
66 lines
2.3 KiB
C++
/********************************************************************************
|
|
* Copyright (C) 2017-2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
|
* *
|
|
* This software is distributed under the terms of the *
|
|
* GNU Lesser General Public Licence (LGPL) version 3, *
|
|
* copied verbatim in the file "LICENSE" *
|
|
********************************************************************************/
|
|
|
|
#include <FairMQTransportFactory.h>
|
|
#include <fairmq/shmem/TransportFactory.h>
|
|
#include <fairmq/zeromq/TransportFactory.h>
|
|
#ifdef BUILD_OFI_TRANSPORT
|
|
#include <fairmq/ofi/TransportFactory.h>
|
|
#endif
|
|
#include <FairMQLogger.h>
|
|
#include <fairmq/tools/Unique.h>
|
|
#include <fairmq/tools/Strings.h>
|
|
|
|
#include <fairlogger/Logger.h>
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <utility> // move
|
|
|
|
using namespace std;
|
|
|
|
FairMQTransportFactory::FairMQTransportFactory(string id)
|
|
: fkId(std::move(id))
|
|
{}
|
|
|
|
auto FairMQTransportFactory::CreateTransportFactory(const string& type,
|
|
const string& id,
|
|
const fair::mq::ProgOptions* config)
|
|
-> shared_ptr<FairMQTransportFactory>
|
|
{
|
|
auto finalId = id;
|
|
|
|
// Generate uuid if empty
|
|
if (finalId.empty()) {
|
|
finalId = fair::mq::tools::Uuid();
|
|
}
|
|
|
|
if (type == "zeromq") {
|
|
return make_shared<fair::mq::zmq::TransportFactory>(finalId, config);
|
|
} else if (type == "shmem") {
|
|
return make_shared<fair::mq::shmem::TransportFactory>(finalId, config);
|
|
}
|
|
#ifdef BUILD_OFI_TRANSPORT
|
|
else if (type == "ofi") {
|
|
return make_shared<fair::mq::ofi::TransportFactory>(finalId, config);
|
|
}
|
|
#endif /* BUILD_OFI_TRANSPORT */
|
|
else {
|
|
LOG(error) << "Unavailable transport requested: "
|
|
<< "\"" << type << "\""
|
|
<< ". Available are: "
|
|
<< "\"zeromq\","
|
|
<< "\"shmem\""
|
|
#ifdef BUILD_OFI_TRANSPORT
|
|
<< ", and \"ofi\""
|
|
#endif /* BUILD_OFI_TRANSPORT */
|
|
<< ". Exiting.";
|
|
throw fair::mq::TransportFactoryError(fair::mq::tools::ToString("Unavailable transport requested: ", type));
|
|
}
|
|
}
|