- give transport Initialize() method with access to device config.
- avoid using global context in the transport.
- simplify shutdown procedure (no need for extra thread).
listing authors in source files is inaccurate too. The version
control system documents this information most accurately, so per
file author lists are dropped for simplicity.
A parser implementation for FairMQ channel properties.
The parser handles a comma separated key=value list format by using the
getsubopt function of the standard library.
The option key '--channel-config' can be used with the list of key/value
pairs like e.g.
--channel-config name=output,type=push,method=bind
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.
Fix CID 131712. In case parameter string does not fit in variable return a failure.
Fix CID 162913. Initialize missing data member.
Fix CID 58901.
Fix CID 149137.
Fix CID 149143.
Fix CIDs 149156, 149150, 149147, 149145, 149144, 149137. Don't use command line parameter argv directly.
* accept ZEROMQ_ROOT as env or cmake variable to hint at install
location (used by aliBuild/alienv)
* added more docs
* fixed mismatch between module name ZeroMQ and prefix of
generated variables ZMQ -> ZeroMQ is now the preferred prefix
(old variables are still available and marked deprecated)
* the aliBuild zeromq recipe does not install zmq.hpp header,
so the module searches now for the zmq.h header
(which is anyways the only one we use)
* some cosmetic changes
* add option ZeroMQ_NO_DEPRECATION to suppress deprecation warning
- 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
- Fix regression from last commit (preventing static run from proper shutdown).
- Guard state changes (for the internal transitions) (msm::process_event is not thread safe).
- Remove unused transition from RUNNING to EXITING.
- Convert factory methods to return smart ptrs.
- Refactor state machine to use same thread for user states.
- Remove unused includes and dependencies, use std.
Sent messages will be scheduled among the endpoints according to socket
type: PUB will send the same data to all endpoints simultaneously, PUSH
will do round robin transfer.
Incoming data is fair queued between endpoints.
This is a feature of at least zeromq and nanomsg.
_____________
To use: in the device configuration, instead of specifying just one address,
specify a comma separated list e.g.
tcp://localhost:123,ipc:///tmp/socket
the connection method (bind/connect) applies to all endpoints in this case.
______________
Mixing binding and connecting endpoints is supported:
prefix "@" means "bind", "+" (or ">") means connect, e.g.
+tcp://localhost:123,@ipc:///tmp/socket,ipc:///tmp/asd
(in case of missing prefix, the default channel method is used for that
endpoint).
- 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.
- removed the executables that are running only in DDS (ddsEx9Sampler.cxx,
ddsEx9TaskProcessor.cxx, ddsEx9FileSink.cxx, ddsParameterMQServer.cxx);
- adapted the executables to allow running within the DDS (setting channel names);
- changed the topology file to run the correct executables (ex9-dds-topology.xml);
- ex9-dds.json - changed the parameter channel name back to "data" (to be compatible with other examples);
- added a shell script to controlDDS.sh;
- added fairmq/fairmq-dds-command executable to send single commands to DDS;
- adapted parmq/parmq-server to run within DDS.
- Remove old cmd options --config-json-file and --config-xml-file.
Now handled by --mq-config with file extension detection.
- Fix --config-json-string and --config-xml-string
- Move config-key to proper place (in --help)
- 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)
- removed the obsolete startFairMQEx9.sh.in script
- added all *.root files in example9/macros/ to .gitignore;
- added run_digi.C to tests;
- added startFairMQEx9_Static.sh to tests;
- startFairMQEx9_Static.sh - script that will run the example non-interactively, statically;
- Pixel9MQConfig_Multipart.json - added acknowledgement channel to sampler and sink;
- runEx9Sampler.cxx and runEx9FileSink.cxx - added option to set the ack channel name;
- FairMQEx9FileSink - if ack channel name set, send acknowledgement of received message, save the tree and file at the end of Run;
- FairMQEx9Sampler - if ack channel name set, count acknowledgements and finish only if all events processed;
- FairMQEx9TaskProcessor - moved some printouts to debug.
General:
- fairmq/logger/logger.cxx - fixed colorless logger bug;
- parmq/runParameterMQServer.cxx - now using runStateMachine function (to enable static execution).