the patch seems big but most of it is just propagating the new notion of
constness of the factory - since it keeps track of created messages with
the internal allocator it no longer is const
Callbacks are called when the data buffer of the message assiciated
with the corresponding region is no longer needed by the transport.
Example in examples/advanced/Region/
* FairMQTransportFactoryZMQ: move the config invariant
initialization to ctor
* FairMQChannel: add new ctor that creates usable channel
* FairMQSocket*: close sockets in dtor
* FairMQTransportFactory*: terminate context in dtor
* FairMQChannel: add Bind/Connect facades (for explicit control, e.g. timing)
- give transport Initialize() method with access to device config.
- avoid using global context in the transport.
- simplify shutdown procedure (no need for extra thread).
C++ standard dictates that NULL / 0 / nullptr is a valid argument for
delete which then simply has no effect:
"The value of the first argument supplied to a deallocation function may
be a null pointer value; if so, and if the deallocation function is one
supplied in the standard library, the call has no effect."
I therefore think in these particular case it's safe to remove the ifs.
- Avoid polling when only one input channel is used.
- Send only handles for shared memory transport.
- Avoid waiting in the rate logger thread when nothing to log.
- Hide warnings from generated files
- Fix#483
- Convert factory methods to return smart ptrs.
- Refactor state machine to use same thread for user states.
- Remove unused includes and dependencies, use std.
- 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.
- Add shared memory example in examples/MQ/SharedMemory
- Device/Task termination: try soft first, and abort if it fails
- Interactive mode: prevent cin from blocking forever (poll)
- 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.
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.