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
- 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.
- 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.
- FairMQ: add possibility to poll on multiple channels.
- FairMQ: include command channel when polling on blocking calls (for unblocking without termination).
- FairMQ: move signal handler inside of FairMQDevice class (call FairMQDevice::CatchSignals() in the main function).
- FairMQ: add 'bool CheckCurrentState(statename)' (instead of 'GetCurrentState() == statename' that cannot be thread safe).
- FairMQDevice: add 'InteractiveStateLoop()' method that can be used to change states from the command line.
- FairMQDevice: add automatic transition to IDLE state if Run() exits without an external event.
- FairMQDevice: implement device reset.
- FairMQDevice: use unordered_map for device channels.
- FairMQChannel: improve address validation for channels.
- FairMQChannel: add ExpectsAnotherPart() method to check if another msg part is expected (old approach still works).
- FairMQ: remove invalid transition from the run files.
- FairMQFileSink: disable ROOT termination signal handler.
- Tutorial3: spawn xterm windows from start scripts without overlapping for better visibility.
- FairMQ Examples: update protobuf test and move its files to a common directory.
- FairMQStateMachine: improve feedback on invalid transitions (more readable).
Organize sockets as a map of vectors of FairMQChannels.
Update FairMQStateMachine by removing SETTINGINPUT, SETTINGOUTPUT,
BIND and CONNECT states and by adding INITIALIZING_TASK, RESETTING_TASK
and RESETTING_DEVICE states. Run states functions in their own thread.
FairMQDevice: Rename property for socket rate logging to have common format (old name is still available for compatibility).
FairMQ: Avoid using std namespace in class headers (may require adding std namespace to some child devices).
FairMQ: A bit of code cleanup
FairMQConfigurable: Stop with an error if a property assignment failed due to incorrect key.
Remaining warnings originate from boost::msm and boost::mpl.
Also, warnings with missing initializer list entries for DeviceOptions are false positives, since those are PODs.
if interrupted with CTRL+C blocking socket calls will return with -1. Each device should call FairMQDevice::Shutdown() before ending the running state to close open sockets, otherwise the interrupt call itself will block.
- FIX: Update number of received messages for FairMQFileSink.
- Add ability to poll on outputs for FairMQPoller.
Add license text to all header files
Add license text to all c++ source files
Add license text to all C macro files
Converting file to UNIX format.
Add license text to all build system files
Add license text to all c source files
Rename file LICENCE to LICENSE. Change preamble in all files.