FairMQ/fairmq/Transports.h
Dennis Klein 2e98a4e2cb feat(ofi)!: Remove ofi transport
BREAKING CHANGE

Due to a lack of users, we remove the experimental code. The
latest implementation can be found in release v1.4.56. This does
not mean it will never be picked up again, but for now there are
no plans.
2023-03-02 11:20:35 +01:00

67 lines
1.9 KiB
C++

/********************************************************************************
* Copyright (C) 2014-2023 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" *
********************************************************************************/
#ifndef FAIR_MQ_TRANSPORTS_H
#define FAIR_MQ_TRANSPORTS_H
#include <fairmq/tools/Strings.h>
#include <memory>
#include <ostream>
#include <stdexcept>
#include <string>
#include <unordered_map>
namespace fair::mq {
enum class Transport
{
DEFAULT,
ZMQ,
SHM
};
struct TransportError : std::runtime_error
{
using std::runtime_error::runtime_error;
};
static const std::unordered_map<std::string, Transport> TransportTypes{
{"default", Transport::DEFAULT},
{"zeromq", Transport::ZMQ},
{"shmem", Transport::SHM}
};
static const std::unordered_map<Transport, std::string> TransportNames{
{Transport::DEFAULT, "default"},
{Transport::ZMQ, "zeromq"},
{Transport::SHM, "shmem"}
};
inline std::string TransportName(Transport transport) { return TransportNames.at(transport); }
inline Transport TransportType(const std::string& transport)
try {
return TransportTypes.at(transport);
} catch (std::out_of_range&) {
throw TransportError(tools::ToString("Unknown transport provided: ", transport));
}
inline std::ostream& operator<<(std::ostream& os, const Transport& transport)
{
return os << TransportName(transport);
}
inline auto GetEnabledTransports() -> std::vector<Transport>
{
return {Transport::ZMQ, Transport::SHM};
}
} // namespace fair::mq
#endif /* FAIR_MQ_TRANSPORTS_H */