Skip to content

Source · fairmq/

Transports.hpublic header

Defines struct fair::mq::TransportError.

Described in Transports.

fairmq/Transports.h60 lines · C++API: TransportErrorGitHub ↗
1/********************************************************************************2 * Copyright (C) 2014-2023 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH  *3 *                                                                              *4 *              This software is distributed under the terms of the             *5 *              GNU Lesser General Public Licence (LGPL) version 3,             *6 *                  copied verbatim in the file "LICENSE"                       *7 ********************************************************************************/8 9#ifndef FAIR_MQ_TRANSPORTS_H10#define FAIR_MQ_TRANSPORTS_H11 12#include <fairmq/tools/Strings.h>13#include <fairmq/TransportEnum.h>14#include <memory>15#include <ostream>16#include <stdexcept>17#include <string>18#include <unordered_map>19 20namespace fair::mq {21 22struct TransportError : std::runtime_error23{24    using std::runtime_error::runtime_error;25};26 27static const std::unordered_map<std::string, Transport> TransportTypes{28    {"default", Transport::DEFAULT},29    {"zeromq", Transport::ZMQ},30    {"shmem", Transport::SHM}31};32 33static const std::unordered_map<Transport, std::string> TransportNames{34    {Transport::DEFAULT, "default"},35    {Transport::ZMQ, "zeromq"},36    {Transport::SHM, "shmem"}37};38 39inline std::string TransportName(Transport transport) { return TransportNames.at(transport); }40 41inline Transport TransportType(const std::string& transport)42try {43    return TransportTypes.at(transport);44} catch (std::out_of_range&) {45    throw TransportError(tools::ToString("Unknown transport provided: ", transport));46}47 48inline std::ostream& operator<<(std::ostream& os, const Transport& transport)49{50    return os << TransportName(transport);51}52 53inline auto GetEnabledTransports() -> std::vector<Transport>54{55    return {Transport::ZMQ, Transport::SHM};56}57 58}   // namespace fair::mq59 60#endif /* FAIR_MQ_TRANSPORTS_H */