diff --git a/fairmq/CMakeLists.txt b/fairmq/CMakeLists.txt index 93cd9489..5d490ad1 100644 --- a/fairmq/CMakeLists.txt +++ b/fairmq/CMakeLists.txt @@ -177,6 +177,12 @@ if(BUILD_FAIRMQ) ) set(FAIRMQ_PRIVATE_HEADER_FILES + devices/BenchmarkSampler.h + devices/Merger.h + devices/Multiplier.h + devices/Proxy.h + devices/Sink.h + devices/Splitter.h plugins/Builtin.h plugins/config/Config.h plugins/control/Control.h @@ -246,7 +252,7 @@ if(BUILD_FAIRMQ) # configure files # ################### set(FAIRMQ_BIN_DIR ${CMAKE_BINARY_DIR}/fairmq) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run/startMQBenchmark.sh.in ${CMAKE_CURRENT_BINARY_DIR}/startMQBenchmark.sh) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/devices/startMQBenchmark.sh.in ${CMAKE_CURRENT_BINARY_DIR}/startMQBenchmark.sh) ################################# # define libFairMQ build target # @@ -350,22 +356,22 @@ if(BUILD_FAIRMQ) ############### # executables # ############### - add_executable(fairmq-bsampler run/runBenchmarkSampler.cxx) + add_executable(fairmq-bsampler devices/runBenchmarkSampler.cxx) target_link_libraries(fairmq-bsampler FairMQ) - add_executable(fairmq-merger run/runMerger.cxx) + add_executable(fairmq-merger devices/runMerger.cxx) target_link_libraries(fairmq-merger FairMQ) - add_executable(fairmq-multiplier run/runMultiplier.cxx) + add_executable(fairmq-multiplier devices/runMultiplier.cxx) target_link_libraries(fairmq-multiplier FairMQ) - add_executable(fairmq-proxy run/runProxy.cxx) + add_executable(fairmq-proxy devices/runProxy.cxx) target_link_libraries(fairmq-proxy FairMQ) - add_executable(fairmq-sink run/runSink.cxx) + add_executable(fairmq-sink devices/runSink.cxx) target_link_libraries(fairmq-sink FairMQ) - add_executable(fairmq-splitter run/runSplitter.cxx) + add_executable(fairmq-splitter devices/runSplitter.cxx) target_link_libraries(fairmq-splitter FairMQ) add_executable(fairmq-shmmonitor shmem/Monitor.cxx shmem/Monitor.h shmem/runMonitor.cxx) diff --git a/fairmq/devices/FairMQBenchmarkSampler.h b/fairmq/devices/BenchmarkSampler.h similarity index 91% rename from fairmq/devices/FairMQBenchmarkSampler.h rename to fairmq/devices/BenchmarkSampler.h index a5d1cbe8..5f403f4d 100644 --- a/fairmq/devices/FairMQBenchmarkSampler.h +++ b/fairmq/devices/BenchmarkSampler.h @@ -1,32 +1,35 @@ /******************************************************************************** - * Copyright (C) 2014-2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 FAIRMQBENCHMARKSAMPLER_H_ -#define FAIRMQBENCHMARKSAMPLER_H_ +#ifndef FAIR_MQ_BENCHMARKSAMPLER_H +#define FAIR_MQ_BENCHMARKSAMPLER_H -#include "FairMQLogger.h" -#include "FairMQDevice.h" -#include "fairmq/tools/RateLimit.h" +#include +#include #include #include // size_t #include // uint64_t #include // memset +#include #include +namespace fair::mq +{ + /** * Sampler to generate traffic for benchmarking. */ -class FairMQBenchmarkSampler : public FairMQDevice +class BenchmarkSampler : public Device { public: - FairMQBenchmarkSampler() + BenchmarkSampler() : fMultipart(false) , fMemSet(false) , fNumParts(1) @@ -117,4 +120,6 @@ class FairMQBenchmarkSampler : public FairMQDevice std::string fOutChannelName; }; -#endif /* FAIRMQBENCHMARKSAMPLER_H_ */ +} // namespace fair::mq + +#endif /* FAIR_MQ_BENCHMARKSAMPLER_H */ diff --git a/fairmq/devices/FairMQMerger.h b/fairmq/devices/Merger.h similarity index 89% rename from fairmq/devices/FairMQMerger.h rename to fairmq/devices/Merger.h index 3d13a138..583085ca 100644 --- a/fairmq/devices/FairMQMerger.h +++ b/fairmq/devices/Merger.h @@ -1,36 +1,32 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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" * ********************************************************************************/ -/** - * FairMQMerger.h - * - * @since 2012-12-06 - * @author D. Klein, A. Rybalchenko - */ -#ifndef FAIRMQMERGER_H_ -#define FAIRMQMERGER_H_ +#ifndef FAIR_MQ_MERGER_H +#define FAIR_MQ_MERGER_H -#include "FairMQDevice.h" -#include "FairMQPoller.h" -#include "FairMQLogger.h" +#include +#include +#include #include #include -class FairMQMerger : public FairMQDevice +namespace fair::mq +{ + +class Merger : public Device { public: - FairMQMerger() + Merger() : fMultipart(true) , fInChannelName("data-in") , fOutChannelName("data-out") {} - ~FairMQMerger() {} protected: bool fMultipart; @@ -112,4 +108,6 @@ class FairMQMerger : public FairMQDevice } }; -#endif /* FAIRMQMERGER_H_ */ +} // namespace fair::mq + +#endif /* FAIR_MQ_MERGER_H */ diff --git a/fairmq/devices/FairMQMultiplier.h b/fairmq/devices/Multiplier.h similarity index 89% rename from fairmq/devices/FairMQMultiplier.h rename to fairmq/devices/Multiplier.h index 32656805..3ededc61 100644 --- a/fairmq/devices/FairMQMultiplier.h +++ b/fairmq/devices/Multiplier.h @@ -1,29 +1,31 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 FAIRMQMULTIPLIER_H_ -#define FAIRMQMULTIPLIER_H_ +#ifndef FAIR_MQ_MULTIPLIER_H +#define FAIR_MQ_MULTIPLIER_H -#include "FairMQDevice.h" +#include #include #include -class FairMQMultiplier : public FairMQDevice +namespace fair::mq +{ + +class Multiplier : public Device { public: - FairMQMultiplier() + Multiplier() : fMultipart(true) , fNumOutputs(0) , fInChannelName() , fOutChannelNames() {} - ~FairMQMultiplier() {} protected: bool fMultipart; @@ -39,9 +41,9 @@ class FairMQMultiplier : public FairMQDevice fNumOutputs = fChannels.at(fOutChannelNames.at(0)).size(); if (fMultipart) { - OnData(fInChannelName, &FairMQMultiplier::HandleMultipartData); + OnData(fInChannelName, &Multiplier::HandleMultipartData); } else { - OnData(fInChannelName, &FairMQMultiplier::HandleSingleData); + OnData(fInChannelName, &Multiplier::HandleSingleData); } } @@ -107,4 +109,6 @@ class FairMQMultiplier : public FairMQDevice } }; -#endif /* FAIRMQMULTIPLIER_H_ */ +} // namespace fair::mq + +#endif /* FAIR_MQ_MULTIPLIER_H */ diff --git a/fairmq/devices/FairMQProxy.h b/fairmq/devices/Proxy.h similarity index 85% rename from fairmq/devices/FairMQProxy.h rename to fairmq/devices/Proxy.h index dd10e1f4..344fc2c6 100644 --- a/fairmq/devices/FairMQProxy.h +++ b/fairmq/devices/Proxy.h @@ -1,33 +1,29 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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" * ********************************************************************************/ -/** - * FairMQProxy.h - * - * @since 2013-10-02 - * @author A. Rybalchenko - */ -#ifndef FAIRMQPROXY_H_ -#define FAIRMQPROXY_H_ +#ifndef FAIR_MQ_PROXY_H +#define FAIR_MQ_PROXY_H -#include "FairMQDevice.h" +#include #include -class FairMQProxy : public FairMQDevice +namespace fair::mq +{ + +class Proxy : public Device { public: - FairMQProxy() + Proxy() : fMultipart(true) , fInChannelName() , fOutChannelName() {} - ~FairMQProxy() {} protected: bool fMultipart; @@ -73,4 +69,6 @@ class FairMQProxy : public FairMQDevice } }; -#endif /* FAIRMQPROXY_H_ */ +} // namespace fair::mq + +#endif /* FAIR_MQ_PROXY_H */ diff --git a/fairmq/devices/README.md b/fairmq/devices/README.md index 780f0794..dfdf36fb 100644 --- a/fairmq/devices/README.md +++ b/fairmq/devices/README.md @@ -2,9 +2,9 @@ With FairMQ several generic devices are provided: -- **FairMQBenchmarkSampler**: generates random data of configurable size and at configurable rate and sends it out on an output channel. -- **FairMQSink**: receives messages on the input channel and simply discards them. -- **FairMQMerger**: receives data from multiple input channels and forwards it to a single output channel. -- **FairMQSplitter**: receives messages on a single input channels and round-robins them among multiple output channels (which can have different socket types). -- **FairMQMultiplier**: receives data from a single input channel and multiplies (copies) it to two or more output channels. -- **FairMQProxy**: connects input channel to output channel, where both can have different socket types and multiple peers. +- **BenchmarkSampler**: generates random data of configurable size and at configurable rate and sends it out on an output channel. +- **Sink**: receives messages on the input channel and simply discards them. +- **Merger**: receives data from multiple input channels and forwards it to a single output channel. +- **Splitter**: receives messages on a single input channels and round-robins them among multiple output channels (which can have different socket types). +- **Multiplier**: receives data from a single input channel and multiplies (copies) it to two or more output channels. +- **Proxy**: connects input channel to output channel, where both can have different socket types and multiple peers. diff --git a/fairmq/devices/FairMQSink.h b/fairmq/devices/Sink.h similarity index 92% rename from fairmq/devices/FairMQSink.h rename to fairmq/devices/Sink.h index 5721cf02..49da4bd9 100644 --- a/fairmq/devices/FairMQSink.h +++ b/fairmq/devices/Sink.h @@ -1,33 +1,31 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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" * ********************************************************************************/ -/** - * FairMQSink.h - * - * @since 2013-01-09 - * @author D. Klein, A. Rybalchenko - */ -#ifndef FAIRMQSINK_H_ -#define FAIRMQSINK_H_ +#ifndef FAIR_MQ_SINK_H +#define FAIR_MQ_SINK_H -#include "FairMQDevice.h" -#include "FairMQLogger.h" +#include +#include #include #include -#include +#include #include +#include #include -class FairMQSink : public FairMQDevice +namespace fair::mq +{ + +class Sink : public Device { public: - FairMQSink() + Sink() : fMultipart(false) , fMaxIterations(0) , fNumIterations(0) @@ -37,8 +35,6 @@ class FairMQSink : public FairMQDevice , fOutFilename() {} - ~FairMQSink() {} - protected: bool fMultipart; uint64_t fMaxIterations; @@ -145,4 +141,6 @@ class FairMQSink : public FairMQDevice } }; -#endif /* FAIRMQSINK_H_ */ +} // namespace fair::mq + +#endif /* FAIR_MQ_SINK_H */ diff --git a/fairmq/devices/FairMQSplitter.h b/fairmq/devices/Splitter.h similarity index 73% rename from fairmq/devices/FairMQSplitter.h rename to fairmq/devices/Splitter.h index 3d7bef02..2bd45200 100644 --- a/fairmq/devices/FairMQSplitter.h +++ b/fairmq/devices/Splitter.h @@ -1,35 +1,31 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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" * ********************************************************************************/ -/** - * FairMQSplitter.h - * - * @since 2012-12-06 - * @author D. Klein, A. Rybalchenko - */ -#ifndef FAIRMQSPLITTER_H_ -#define FAIRMQSPLITTER_H_ +#ifndef FAIR_MQ_SPLITTER_H +#define FAIR_MQ_SPLITTER_H -#include "FairMQDevice.h" +#include #include -class FairMQSplitter : public FairMQDevice +namespace fair::mq +{ + +class Splitter : public Device { public: - FairMQSplitter() + Splitter() : fMultipart(true) , fNumOutputs(0) , fDirection(0) , fInChannelName() , fOutChannelName() {} - ~FairMQSplitter() {} protected: bool fMultipart; @@ -47,9 +43,9 @@ class FairMQSplitter : public FairMQDevice fDirection = 0; if (fMultipart) { - OnData(fInChannelName, &FairMQSplitter::HandleData); + OnData(fInChannelName, &Splitter::HandleData); } else { - OnData(fInChannelName, &FairMQSplitter::HandleData); + OnData(fInChannelName, &Splitter::HandleData); } } @@ -66,4 +62,6 @@ class FairMQSplitter : public FairMQDevice } }; -#endif /* FAIRMQSPLITTER_H_ */ +} // namespace fair::mq + +#endif /* FAIR_MQ_SPLITTER_H */ diff --git a/fairmq/run/runBenchmarkSampler.cxx b/fairmq/devices/runBenchmarkSampler.cxx similarity index 83% rename from fairmq/run/runBenchmarkSampler.cxx rename to fairmq/devices/runBenchmarkSampler.cxx index db2d06b2..5f28bcf8 100644 --- a/fairmq/run/runBenchmarkSampler.cxx +++ b/fairmq/devices/runBenchmarkSampler.cxx @@ -1,13 +1,13 @@ /******************************************************************************** - * Copyright (C) 2014-2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 -#include +#include +#include namespace bpo = boost::program_options; @@ -24,7 +24,7 @@ void addCustomOptions(bpo::options_description& options) ("msg-rate", bpo::value()->default_value(0), "Msg rate limit in maximum number of messages per second"); } -FairMQDevicePtr getDevice(const fair::mq::ProgOptions& /* config */) +std::unique_ptr getDevice(const fair::mq::ProgOptions& /* config */) { - return new FairMQBenchmarkSampler(); + return std::make_unique(); } diff --git a/fairmq/run/runMerger.cxx b/fairmq/devices/runMerger.cxx similarity index 76% rename from fairmq/run/runMerger.cxx rename to fairmq/devices/runMerger.cxx index c3e4eac7..5617c8fe 100644 --- a/fairmq/run/runMerger.cxx +++ b/fairmq/devices/runMerger.cxx @@ -1,13 +1,13 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 -#include +#include +#include namespace bpo = boost::program_options; @@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options) ("multipart", bpo::value()->default_value(true), "Handle multipart payloads"); } -FairMQDevicePtr getDevice(const fair::mq::ProgOptions& /*config*/) +std::unique_ptr getDevice(const fair::mq::ProgOptions& /*config*/) { - return new FairMQMerger(); + return std::make_unique(); } diff --git a/fairmq/run/runMultiplier.cxx b/fairmq/devices/runMultiplier.cxx similarity index 76% rename from fairmq/run/runMultiplier.cxx rename to fairmq/devices/runMultiplier.cxx index e14e4c85..2f36cd51 100644 --- a/fairmq/run/runMultiplier.cxx +++ b/fairmq/devices/runMultiplier.cxx @@ -1,13 +1,13 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 -#include +#include +#include namespace bpo = boost::program_options; @@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options) ("multipart", bpo::value()->default_value(true), "Handle multipart payloads"); } -FairMQDevicePtr getDevice(const fair::mq::ProgOptions& /*config*/) +std::unique_ptr getDevice(const fair::mq::ProgOptions& /*config*/) { - return new FairMQMultiplier(); + return std::make_unique(); } diff --git a/fairmq/run/runProxy.cxx b/fairmq/devices/runProxy.cxx similarity index 76% rename from fairmq/run/runProxy.cxx rename to fairmq/devices/runProxy.cxx index d8bf5918..2c626787 100644 --- a/fairmq/run/runProxy.cxx +++ b/fairmq/devices/runProxy.cxx @@ -1,13 +1,13 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 -#include +#include +#include namespace bpo = boost::program_options; @@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options) ("multipart", bpo::value()->default_value(true), "Handle multipart payloads"); } -FairMQDevicePtr getDevice(const fair::mq::ProgOptions& /*config*/) +std::unique_ptr getDevice(const fair::mq::ProgOptions& /*config*/) { - return new FairMQProxy(); + return std::make_unique(); } diff --git a/fairmq/run/runSink.cxx b/fairmq/devices/runSink.cxx similarity index 81% rename from fairmq/run/runSink.cxx rename to fairmq/devices/runSink.cxx index 55dabcf2..255747eb 100644 --- a/fairmq/run/runSink.cxx +++ b/fairmq/devices/runSink.cxx @@ -1,13 +1,13 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 -#include +#include +#include namespace bpo = boost::program_options; @@ -21,7 +21,7 @@ void addCustomOptions(bpo::options_description& options) ("multipart", bpo::value()->default_value(false), "Handle multipart payloads"); } -FairMQDevicePtr getDevice(const fair::mq::ProgOptions& /*config*/) +std::unique_ptr getDevice(const fair::mq::ProgOptions& /*config*/) { - return new FairMQSink(); + return std::make_unique(); } diff --git a/fairmq/run/runSplitter.cxx b/fairmq/devices/runSplitter.cxx similarity index 76% rename from fairmq/run/runSplitter.cxx rename to fairmq/devices/runSplitter.cxx index 241207c7..67ad8187 100644 --- a/fairmq/run/runSplitter.cxx +++ b/fairmq/devices/runSplitter.cxx @@ -1,13 +1,13 @@ /******************************************************************************** - * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * Copyright (C) 2014-2021 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 -#include +#include +#include namespace bpo = boost::program_options; @@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options) ("multipart", bpo::value()->default_value(true), "Handle multipart payloads"); } -FairMQDevicePtr getDevice(const fair::mq::ProgOptions& /*config*/) +std::unique_ptr getDevice(const fair::mq::ProgOptions& /*config*/) { - return new FairMQSplitter(); + return std::make_unique(); } diff --git a/fairmq/run/startMQBenchmark.sh.in b/fairmq/devices/startMQBenchmark.sh.in similarity index 100% rename from fairmq/run/startMQBenchmark.sh.in rename to fairmq/devices/startMQBenchmark.sh.in