- Remove the compile time check of the transport implementation.
The transport (zeromq/nanomsg) can be chosen at run time with:
`device.SetTransport("zeromq"); // possible values are "zeromq" and "nanomsg"`.
For devices that use FairMQProgOptions, the transport can be configured via cmd option:
`--transport zeromq` or `--transport nanomsg`. Default values is "zeromq".
The device receives the configured value with:
`device.SetTransport(config.GetValue<std::string>("transport"));`
Old method of setting transport still works. But the NANOMSG constant is not defined.
- Remove old `fairmq/prototest` directory. It was only used as a test for protobuf.
The protobuf part of Tutorial3 does the same (with different values).
- Fix a bug in FairMQPollerNN, where the `revents` value was not initialized.
This caused the `poller->CheckOutput()` to trigger when it should not.
FairMQ
C++ Message Queuing Library
Dependencies
- Boost (PUBLIC)
- FairLogger (PUBLIC)
- CMake (BUILD)
- GTest (BUILD, optional,
tests) - ZeroMQ (PRIVATE)
- Msgpack (PRIVATE, optional,
nanomsg_transport) - nanomsg (PRIVATE, optional,
nanomsg_transport) - OFI (PRIVATE, optional,
ofi_transport) - Protobuf (PRIVATE, optional,
ofi_transport) - DDS (PRIVATE, optional,
dds_plugin)
Installation
git clone https://github.com/FairRootGroup/FairMQ
mkdir fairmq_build && cd fairmq_build
cmake -DCMAKE_INSTALL_PREFIX=./fairmq_install ../fairmq
cmake --build . --target install
If dependencies are not installed in standard system
directories, you can hint the installation location
via -DCMAKE_PREFIX_PATH=... or per dependency via
-D{DEPENDENCY}_ROOT=.... {DEPENDENCY} can be GTEST,
BOOST, FAIRLOGGER, ZEROMQ, MSGPACK, NANOMSG,
OFI, PROTOBUF, or DDS (*_ROOT variables can also
be environment variables).
Usage
FairMQ ships as a CMake package, so in your CMakeLists.txt you can discover it like this:
find_package(FairMQ)
If FairMQ is not installed in system directories, you can hint the installation:
set(CMAKE_PREFIX_PATH /path/to/FairMQ_install_prefix ${CMAKE_PREFIX_PATH})
find_package(FairMQ)
find_package(FairMQ) will define an imported target FairMQ::FairMQ (An alias FairRoot::FairMQ
is also defined for backwards compatibility, but it is deprecated).
In order to succesfully compile and link against the FairMQ::FairMQ target,
you need to discover its public package dependencies, too.
find_package(FairMQ)
find_package(FairLogger ${FairMQ_FairLogger_VERSION})
find_package(Boost ${FairMQ_Boost_VERSION} COMPONENTS ${FairMQ_BOOST_COMPONENTS})
Of course, feel free to customize the above commands to your needs.
Optionally, you can require certain FairMQ package components and a minimum version:
find_package(FairMQ 1.1.0 COMPONENTS nanomsg_transport dds_plugin)
find_package(FairLogger ${FairMQ_FairLogger_VERSION})
find_package(Boost ${FairMQ_Boost_VERSION} COMPONENTS ${FairMQ_BOOST_COMPONENTS})
When building FairMQ, CMake will print a summary table of all available package components.
CMake options
On command line:
-DDISABLE_COLOR=ONdisables coloured console output.-DBUILD_TESTING=OFFdisables building of tests.-DBUILD_NANOMSG_TRANSPORT=ONenables building of nanomsg transport.-DBUILD_OFI_TRANSPORT=ONenables building of the experimental OFI transport.-DBUILD_DDS_PLUGIN=ONenables building of the DDS plugin.- You can hint non-system installations for dependent packages, see the #Installation section above
After the find_package(FairMQ) call the following CMake variables are defined:
${FairMQ_Boost_VERSION}contains the minimum Boost version FairMQ requires.${FairMQ_Boost_COMPONENTS}contains the list of Boost components FairMQ depends on.${FairMQ_FairLogger_VERSION}contains the minimum FairLogger version FairMQ requires.- ... TODO
Documentation
Standard FairRoot is running all the different analysis tasks within one process. FairMQ (Message Queue) allows starting tasks on different processes and provides the communication layer between these processes.
License
GNU Lesser General Public Licence (LGPL) version 3, see LICENSE.
Copyright (C) 2013-2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH