Commit Graph

29 Commits

Author SHA1 Message Date
Sebastien Binet
ce47c92d8c all: apply fer-json-fmt 2018-05-02 13:51:55 +02:00
Sebastien Binet
8f7a584ad0 all: use strict(er) and more regular JSON schema 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
626ebdd298 Update JSON files & readme, use FairMQDevicePtr, cleanup. 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
f18c6e50e2 Move config & control DDS functionality into plugins. 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
a1424e13fb Enable new callback API
- OnData() channel data handler.
 - ConditionalRun() for devices without incoming data.
 - Header file with common main(), to be extended with getDevice/addCustomOptions.
 - Update examples (MQ/Tutorial3) to use the new API and config.
 - NewSimpleMessage() for simpler creation of small messages (additional copy).
 - Replace SetProperty/GetProperty with fConfig access.
 - Runtime configurable channel names for common devices.
 - Configurable logging interval per channel.
 - FairMQMultiplier for distributing same data to multiple outputs.
 - Cleanup state machine messages.
 - Cmd option to toggle signal handling.
 - Simpler API for send/receive timeouts.
 - Enable --log-to-file.
 - Fix coverity issues, warnings.
 - Various code cleanup and minor tweaks.
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
a01c4368b7 Fix unused variables, init order and effc++ warnings. 2018-05-02 13:51:55 +02:00
Radoslaw Karabowicz
e88f0de620 Modified the ROOTMacros.cmake to allow GENERATE_EXECUTABLE()
to install executables in directory set by BIN_DESTINATION (or in bin/ if not set).

Changed the location of the executables:
- from build/bin/ to build/bin/examples/example-name/
- from install/bin/ to install/examples/example-name/bin/
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
4edc9221d7 Refactor DDS example and tools to be able to run with/without DDS 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
da43fa6f59 Remove redundant state change call and revert the termination handler. 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
6c49a89868 Let ParseAll exit if unsuccessfull 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
1d2d409bfd Cleanup examples 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
6c88e75ed7 Cleanup example include directories 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
b8c3013ac5 Fix the logger conflict issue 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
86ae4c2da1 Configuration and DDS example/tools updates
- Update DDS example command UI and extract it from example.
 - Unify address handling via DDS properties for dynamic deployment.
 - Update DDS docs with the new approach.
 - Allow `--config-key` to be used to access common config in JSON.
 - Allow common channel properties to be specified for all sockets.
 - Update MQ examples and Tuto3 with new config options.
 - Add start scripts to MQ examples for easier use.
2018-05-02 13:51:55 +02:00
winckler
9a6e7f7aaf enable object array parsing in JSON parser for devices, channels, and sockets.
device, channel, and socket are parsed as before
2018-05-02 13:51:55 +02:00
winckler
b2c97b8f95 add deleter in FairMQ example 8 2018-05-02 13:51:55 +02:00
winckler
e1d4aa40c8 change serialization API so that it takes a FairMQMessage reference 2018-05-02 13:51:55 +02:00
winckler
09ea40e37f add serialization API 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
c9388d4837 Update DDS example to use new library and names 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
f02936165c Install config files for MQ examples 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
54a9e44d21 Update multi-part features (nanomsg) and various fixes
- Implement nanomsg multipart with MessagePack.
 - Use the MessagePack from FairSoft and handle not found case.
 - Update splitter, merger and proxy devices to handle multi-part.
 - Let FairMQParts.At() return pointer reference (can be used for moving).
 - Add missing const specifier in the message interface.
 - Add transmit kernel size setting to channels (ZMQ_SNDBUF).
 - Remove FairMQBuffer device.
 - Remove old multi-part methods from Tutorial3 example (to be replaced with Parts API).
 - Make callback mandatory for newMsg(data, size, callback).
 - Add missing <vector> include in FairMQSocket.
2018-05-02 13:51:55 +02:00
Florian Uhlig
54ff30f055 Fix compiler warnings.
Initialize all data members in initializer lists.
Reorder data members in initializer list to have the same order as in the class declaration.
Comment or remove unused parameters and unused variables.
Convert all old style casts to the correct and explicit c++ cast like const_cast, static_cast,
dynamic_cast or reinterpret_cast. In most cases static_cast is used.
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
e3cf68331a FairMQ: Extend Multipart and messaging API
- Extend the multipart API to allow sending vectors of messages or helper
   thin wrapper FairMQParts. See example in examples/MQ/8-multipart.
 - NewMessage() can be used in devices instead of
   fTransportFactory->CreateMessage().
   Possible arguments remain unchanged (no args, size or data+size).
 - Send()/Receive() methods can be used in devices instead of
   fChannels.at("chan").at(i).Send()/Receive():
   Send(msg, "chan", i = 0), Receive(msg, "chan", i = 0).
 - Use the new methods in MQ examples and tests.
 - No breaking changes, but FAIRMQ_INTERFACE_VERSION is incremented to 3
   to allow to check for new methods.
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
1c710e22f5 Add FlatBuffers & MessagePack examples
- Add FlatBuffers serialization example to Tutorial 3
 - Add MessagePack serialization example to Tutorial 3
 - Performance improvements in Boost serialization example
 - Use `GetEntriesFast()` for FairTestDetectorRecoTask
 - Use `Clear()` instead of `Delete()` in MQ parts of Tutorial 3
 - Fix CMake variables from preventing compilation without nanomsg.
 - create macro/data directories in install directory
 - Get rid of data duplication in fill_parameters.C
 - Various cleanups and fixes
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
daf6856ce5 Remove compile time transport interface switch
- 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.
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
8825817a42 Add a acknowledgement channel to Tutorial 3...
- ...to measure performance of the serialization libraries.
  - Rename `--log-color-format` cmd option to `--log-color`.
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
90f0e3cb78 Extend DDS Example to use command interface 2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
7744d8bc91 Update device configuration
- Move general config files out of example directory to fairmq/run.
 - Use FairMQProgOptions for MQ example 5.
 - Add SendPartAsync() for non-blocking send of a message part.
2018-05-02 13:51:55 +02:00
Alexey Rybalchenko
9625268c50 Rename /example to /examples and move MQ examples in it 2018-05-02 13:51:55 +02:00