Commit Graph

499 Commits

Author SHA1 Message Date
Alexey Rybalchenko
7e6bd91467 Fix reorder warnings 2018-01-24 14:36:52 +01:00
Alexey Rybalchenko
2c2770204f Fix missing session name resize if running without FairMQProgOptions 2018-01-24 14:36:52 +01:00
Alexey Rybalchenko
efdec0f6ba FairMQProgOptions: initialize defaults in the constructor, not in ParseAll 2018-01-24 14:36:52 +01:00
Alexey Rybalchenko
778c8e16bb Replace pstreams with Boost.Process 2018-01-23 18:35:09 +01:00
Alexey Rybalchenko
e462d6f597 Fix wrong argument order in file sink initialization 2018-01-17 14:41:35 +01:00
Alexey Rybalchenko
a91c481abf remove custom timestamp stuff from logger wrapper 2018-01-16 22:53:26 +01:00
Alexey Rybalchenko
a3393e600e convert log severities use to lowercase and remove use of MQLOG 2018-01-16 22:53:26 +01:00
Alexey Rybalchenko
4e942e489b Single Logger implementation for FairLogger & FairMQLogger 2018-01-16 22:53:26 +01:00
Alexey Rybalchenko
d3e0b9fc97 Give ipc tests better address name 2018-01-13 07:49:08 +01:00
Alexey Rybalchenko
b59f1b950d FairMQ: Add hint argument to the region callback, settable per message. 2017-12-18 12:53:58 +01:00
Alexey Rybalchenko
ba78964e29 FairMQ: add FairMQMessage::Copy(const FairMQMessage& msg), deprecate the old one. 2017-12-10 17:37:53 +01:00
Alexey Rybalchenko
e340a52bf2 Use FairMQ tools for string creation. 2017-12-10 17:37:53 +01:00
Alexey Rybalchenko
848ebf2ff3 FairMQ: Add test for setting used message size functionality 2017-12-10 17:37:53 +01:00
Alexey Rybalchenko
ea7ae3ded9 remove Get/SetMessage from interface (internal transport detail) 2017-12-10 17:37:53 +01:00
Alexey Rybalchenko
e5aa85b61d FairMQ: Add functionality to set used message size 2017-12-10 17:37:53 +01:00
laphecet
ac4695b215 Missing explicit reference to lib boost_signals 2017-12-06 13:04:58 +01:00
Alexey Rybalchenko
fd19480a2e FairMQ: Fix missing region acks if receiver doesn't call OnData & clean includes. 2017-11-30 13:56:06 +01:00
Dennis Klein
5c0178e882 FairMQ: Remove deprecated header <tools/FairMQTools.h> 2017-11-29 16:40:25 +01:00
Mohammad Al-Turany
b5e32403ea correct typo in copyright section 2017-11-29 13:11:35 +01:00
Alexey Rybalchenko
b967de4a57 FairMQ: Fix session name modification shm transport. 2017-11-29 11:00:31 +01:00
Alexey Rybalchenko
0dc4000187 FairMQ: Add uuid generator to tools & let tests use it for session names. 2017-11-29 09:06:17 +01:00
Alexey Rybalchenko
85aab51bd4 FairMQ: Add test for example/advanced/Region.
Also fix a regression in nanomsg transport.
2017-11-29 09:06:17 +01:00
Alexey Rybalchenko
eddfd0d1bd FairMQ: Introduce configurable session name per device.
Session name is given to each device via `--session`,
which must be synchronized from a higher level,
e.g. from start script or command & control entity.
2017-11-29 09:06:17 +01:00
Alexey Rybalchenko
58a312b730 FairMQ: Introduce callbacks for the FairMQUnmanagedRegion.
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/
2017-11-29 09:06:17 +01:00
Dennis Klein
378c47c5e5 FairMQ: Implement config API for string subscriptions
This API auto converts property values to strings and allows a more
convenient one catches all subscription.
2017-11-17 16:24:29 +01:00
Dennis Klein
80332583ee FairMQ: Add state subscription to DDS plugin 2017-11-17 16:24:29 +01:00
Dennis Klein
56c0b2fd2b FairMQ: Add heartbeats to DDS plugin 2017-11-17 16:24:29 +01:00
Matthias Richter
72cdd1e3d7 using steady_clock instead of system_clock 2017-11-17 16:23:38 +01:00
Matthias Richter
4351f3df0d adding missing variable initialisation in second constructor 2017-11-17 16:23:38 +01:00
Matthias Richter
2a134b9206 Changing '--rate' option to type float, remove stringstream from argument scan
This correction to the previous commit leaves the <sstream> header in, because
std::stringstream has been using already before and the header was missing.
2017-11-17 16:23:38 +01:00
Matthias Richter
9b2b1cf9f1 Adding rate control for ConditionalRun function
Devices implementing the conditional run method are typically source
devices and a rate control can be desireable. New option '--rate' with
a float number argument in Hz can be used to configure rate control.
By default it is switched off.
2017-11-17 16:23:38 +01:00
Dennis Klein
7429f7a326 FairMQ: Add dump-config functionality to DDS plugin 2017-11-01 15:32:35 +01:00
Dennis Klein
511141c851 FairMQ: Install DDS plugin 2017-11-01 15:32:17 +01:00
Dennis Klein
ba5d40fd71 FairMQ: Fix visibility of include dirs of DDS plugin targets 2017-11-01 15:32:17 +01:00
Dennis Klein
864a41502f FairMQ: Support the case with multiple default routes 2017-11-01 15:32:17 +01:00
Alexey Rybalchenko
0bb866ff36 FairMQ: shared memory unmanaged region updates:
- use same mapping for sender/receiver (created/remote) region.
 - rename FairMQRegion -> FairMQUnmanagedRegion.
2017-10-20 14:17:15 +02:00
Alexey Rybalchenko
f7d3a5e8ae FairMQ: fix shm transport placement new alignment issue 2017-10-18 21:15:14 +02:00
Alexey Rybalchenko
f277db2354 FairMQ: shm region & monitor bugfixes 2017-10-17 21:31:12 +02:00
Alexey Rybalchenko
aa8d16ff9a Move shmem prototype out of MQ examples 2017-10-16 09:49:38 +02:00
Dennis Klein
b7d97f6306 FairMQ: Support Apple Compiler 8.0
In fact, this commit will workaround a bug with template alias compilation
from Clang 3.4 to Clang 3.8.
2017-10-12 12:16:50 +02:00
Dennis Klein
b63e2ee153 Remove outdated build flag -Weffc++ 2017-10-10 17:17:05 +02:00
Alexey Rybalchenko
fb0996268a Fix coverity issues - unchecked return val, uncaught excepts 2017-10-10 17:15:14 +02:00
Dennis Klein
896a8d6b7f FairMQ: Revert regression introduced by f1513f5169d335c17ccdfdb27f0f0c4edbeb8b65 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
e3cb1dd9e5 FairMQ: remove runSimpleMQStateMachine (now via control plugin). 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
d175a732a6 FairMQ: fix const qualifier for DeviceRunner 2017-10-05 15:32:12 +02:00
Dennis Klein
1bc5771bf3 Fix compilation for GCC 4.9.2 2017-10-05 15:32:12 +02:00
Dennis Klein
4ae2e025c9 FairMQ: Implement DeviceRunner 2017-10-05 15:32:12 +02:00
Dennis Klein
7f23a70670 FairMQ: Implement property change event config API
Replaced the old event manager implementation, which changed the
subscription semantics to bulk event subscriptions.
2017-10-05 15:32:12 +02:00
Dennis Klein
8c8ee45914 FairMQ: Implement GetPropertyKeys config API 2017-10-05 15:32:12 +02:00
Dennis Klein
2589ca5ced FairMQ: Rewrite the state machine
* Simplify the code
* Drop Boost.MSM dependency
* Drop threaded execution
* Support deferred state changes
* Monitor state changes/queues via callbacks
2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
179968db1e Remove FairMQConfigurable 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
26cfe69b41 Revert refactoring that releases lock too early. 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
6d7009b331 Refactor FairMQLogger 2017-10-05 15:32:12 +02:00
Dennis Klein
6ecd0e9085 FairMQ: Rewrite event manager to support multiple subscribers 2017-10-05 15:32:12 +02:00
Dennis Klein
88b3b8ef18 FairMQ: Make sure --catch-signals is always handled 2017-10-05 15:32:12 +02:00
Dennis Klein
fd08167a4c FairMQ: Print Entering STATE log lines when user perceived state begins. 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
e37e559dce Fix warnings and remove deleted file from installation. 2017-10-05 15:32:12 +02:00
Dennis Klein
44a59f25a7 FairMQ: Move --catch-signals logic to control plugin
* Add StealDeviceControl() API to plugin services
2017-10-05 15:32:12 +02:00
Dennis Klein
7dcd09692c FairMQ: Move static and interactive control modes to plugin (3) 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
01327426c3 Port DDS plugin to the new plugin system. 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
2db114bc5c Eliminate warnings in FairLink and FairMQ Plugins. 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
f6365d013e Refactor state machine. 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
70e46a0b86 Cleanup base/MQ. 2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
334b91785b FairMQ: Move static and interactive control modes to plugin (2) 2017-10-05 15:32:12 +02:00
Dennis Klein
10f67e4c72 FairMQ: Move static and interactive control modes to plugin
NOT YET FINISHED
2017-10-05 15:32:12 +02:00
Dennis Klein
2af3ae99eb FairMQ: Implement Take/ReleaseDeviceControl plugin API
The main function of this API is to make sure only one plugin is
controlling the device state transitions at a time. The
ReleaseDeviceControl() signal is used to implement a function
WaitForPluginsToReleaseDeviceControl() which is used to block the main
thread if a control plugin is used.
2017-10-05 15:32:12 +02:00
Dennis Klein
dfb2bac4bc FairMQ: Add test coverage for PluginServices 2017-10-05 15:32:12 +02:00
Dennis Klein
052ac8487d FairMQ: Add static plugin mechanism
* Add skeleton for Take/ReleaseControl API
* Add skeleton for control_static builtin plugin
2017-10-05 15:32:12 +02:00
Alexey Rybalchenko
17d7cd8ce4 Fix name conflict with FairLogger+FairMQStateMachine 2017-10-04 13:54:44 +02:00
Alexey Rybalchenko
6349438829 Run InitTask in the worker thread (same as all other state handlers). 2017-09-07 14:22:50 +02:00
Alexey Rybalchenko
bfb9feab03 Update shared memory transport documentation. 2017-09-04 16:33:55 +02:00
Alexey Rybalchenko
09e45e27ab Add introspection docs. 2017-09-04 16:33:55 +02:00
Alexey Rybalchenko
7b37eaa507 Revert the parser changes. 2017-09-04 16:33:39 +02:00
Alexey Rybalchenko
5e44273531 Add docs for common devices 2017-08-30 08:38:00 +02:00
Alexey Rybalchenko
9be5a20df6 Add doxygen comment about state handlers running in worker thread 2017-08-30 08:38:00 +02:00
Alexey Rybalchenko
3ab7ee5f02 FairMQParser: Disable deprecated parsing for singular JSON keys 2017-08-30 08:38:00 +02:00
Alexey Rybalchenko
4c7f119ce8 Configuration docs 2017-08-30 08:38:00 +02:00
Alexey Rybalchenko
4dd08051cc simplify state change callback handling 2017-08-30 08:38:00 +02:00
Alexey Rybalchenko
eeb994a584 Tests for MQ examples 2017-08-28 10:53:41 +02:00
Alexey Rybalchenko
221d2567f0 FairMQRegion and examples/advanced/Region 2017-08-08 14:18:10 +02:00
Alexey Rybalchenko
65f1b96dc3 Add Version member to FairMQDevice, settable via constructor 2017-07-17 13:25:16 +02:00
Alexey Rybalchenko
3d8175bfd6 base/MQ and Lmd example cleanup 2017-07-04 15:59:36 +02:00
Alexey Rybalchenko
6f18cf23da Merge channels from config to device, instead of replace 2017-07-04 07:13:01 +02:00
Dennis Klein
a26925cbf5 FairMQ: Fix various errors from CI
* move Plugins::Version to fair::mq::tools
* fix Parser interface
* make device a shared pointer in main
* provide std::hash template specialization
* fix FairMQ.Plugins/FairMQ.PluginsStatic when run with ctest
* fix MQ/serialization example
* add --no-as-needed flag
* GCC 4 does not support member refs, move to pointer types
2017-07-04 07:05:11 +02:00
Dennis Klein
ad0f050c99 FairMQ: Implement PluginServices - Config 2017-07-04 07:05:11 +02:00
Dennis Klein
739460b2fe FairMQ: Implement PluginServices - Control 2017-07-04 07:05:11 +02:00
Dennis Klein
9b61b924b2 FairMQ: Integration of Plugins through PluginServices 2017-07-04 07:05:11 +02:00
Dennis Klein
60d929b0bd FairMQ: Add plugin mechanism (Plugin and PluginManager classes) 2017-07-04 07:05:11 +02:00
Alexey Rybalchenko
ac69607250 make FairProgOptions calls thread safe 2017-07-04 07:05:11 +02:00
Alexey Rybalchenko
b47cc8b29c add callback on state change 2017-07-04 07:05:11 +02:00
Alexey Rybalchenko
b311b0c6da FairMQLogger: undefine DEBUG if it has been previously defined 2017-06-26 16:35:58 +02:00
Alexey Rybalchenko
035d5fb353 Provide accessors for device members that are part of publiv API 2017-06-23 11:45:46 +02:00
Alexey Rybalchenko
92cae6f9a4 FairMQProxy: remove outdated code 2017-06-23 11:45:46 +02:00
Alexey Rybalchenko
a60fac80d9 FairMQProgOptions: add a method to check key existence 2017-06-23 11:45:46 +02:00
Alexey Rybalchenko
4bc54ad32b add --print-channels to print registered channels of the device 2017-06-23 11:45:46 +02:00
Alexey Rybalchenko
1d38a2350f add --print-options to print available options in short format 2017-06-23 11:45:46 +02:00
Alexey Rybalchenko
cae3fd6aa3 Catch any exception type in the main of runFairMQDevice.h 2017-06-23 11:36:20 +02:00
Dennis Klein
25a75c1f82 add channel, poller and testing docs 2017-06-04 01:14:10 +02:00
Alexey Rybalchenko
5e2926e0da FairMQShmMonitor docs 2017-06-04 01:12:30 +02:00
Alexey Rybalchenko
f05ed326a6 Update FairMQShmMonitor 2017-06-04 01:12:30 +02:00
Alexey Rybalchenko
764514a35a Test devices without config & two in a process 2017-06-04 01:06:12 +02:00
Alexey Rybalchenko
f4e5a74f23 Always have access to FairMQProgOptions from device. 2017-06-04 01:06:12 +02:00
Dennis Klein
7bb6a2eed9 add default subchannel index 2017-05-24 16:37:33 +02:00
Dennis Klein
8bc21675af Refactor TransportFactory to RAII
* Remove explicit Initialize and Terminate states,
    map them onto ctor/dtor
  * Remove no longer needed Shutdown state
  * Remove deprecated SetTransport()
2017-05-24 16:37:33 +02:00
Dennis Klein
733794657c update docs 2017-05-23 14:10:34 +02:00
Dennis Klein
89423eb737 enable shmem tests 2017-05-23 14:10:34 +02:00
Dennis Klein
8b93b4f8ed do not call nn_term()
nn_term() will globally lock down the nanosmsg library. The nn_init()
interface is no longer available to reset the global state. Subsequent unit
tests after the first nn_term() call are failing.
2017-05-23 14:10:34 +02:00
Dennis Klein
d2c78479f0 Refactor FairMQTools
* Split header, add common header
  * Transform to canonical namespace
  * Deprecate old header
  * Adapt to new Tools.h
2017-05-23 13:42:56 +02:00
Dennis Klein
9215c81362 Deprecate old TransportFactory factory 2017-05-23 08:37:52 +02:00
Alexey Rybalchenko
9288a2c3d5 Add tests for poller. 2017-05-23 08:32:13 +02:00
Alexey Rybalchenko
6b221d950c Add NewPoller() wrapper. 2017-05-23 08:32:13 +02:00
Dennis Klein
3be2f297f3 generate id if no device id available
* CreateSocket factory no longer accepts id param, but the
    TransportFactory has an id member instead
2017-05-18 20:01:44 +02:00
Dennis Klein
eb614b6005 do not copy strings 2017-05-18 20:01:44 +02:00
Dennis Klein
b5dab60a82 add more single and multithreaded unit tests 2017-05-18 20:01:44 +02:00
Dennis Klein
3205e0c378 refactor to more idiomatic RAII
* 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)
2017-05-18 20:01:44 +02:00
Dennis Klein
87252edbe0 move New*Message apis to TransportFactory
* add facades to Device and Channel
  * add Transport() getter to Device
  * inline Transport() getter from Channel
2017-05-18 20:01:44 +02:00
Dennis Klein
97ca52aa0e move TransportFactory factory into FairMQTransportFactory namespace 2017-05-18 20:01:44 +02:00
Dennis Klein
f522dc1717 add FairMQParts Send/Receive apis 2017-05-18 20:01:44 +02:00
Dennis Klein
8b85dd2191 support inproc addresses 2017-05-18 20:01:44 +02:00
Dennis Klein
3cb80de773 add channel name setter 2017-05-18 20:01:44 +02:00
Dennis Klein
463a49d79c update CONTRIBUTORS 2017-05-18 20:01:44 +02:00
Dennis Klein
2d4282c62d Fix CID 169527 Uncaught Exception 2017-05-17 18:45:44 +02:00
Dennis Klein
a9ac1fa91c Fix CID 169522 Unchecked return value 2017-05-17 18:45:15 +02:00
Dennis Klein
ec786dce03 Fix CID 169525 Data race condition 2017-05-17 18:44:51 +02:00
Dennis Klein
c78541432f add missing link dependency 2017-05-10 06:43:55 +02:00
Dennis Klein
04bc7d4bfd add missing include guard 2017-05-10 06:42:57 +02:00
Dennis Klein
3dc5fd1d6e expose STL iterator interface for FairMQParts 2017-05-09 14:48:34 +02:00
Alexey Rybalchenko
0926a9a764 FairMQ: allow accumulation of parts on receive. 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
1fa5c836a6 FairMQ: stop device if binding was unsuccessful (not updated dynamically). 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
459b42add2 FairMQ: MakeTransport to create stand-alone transport for tests. 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
085de240c2 FairMQ: fix missing includes. 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
2a526b8625 shmem: introduce FairMQShmMonitor. 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
7b4a2ae932 shmem: configurable segment name. 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
14f9084a80 shmem: Heartbeats for the monitor. 2017-04-28 13:30:51 +02:00
Alexey Rybalchenko
a8d40abbd9 FairProgOptions: update ambiguous option name. 2017-04-28 13:30:51 +02:00
Dennis Klein
f39b41d68c tweak startup and linger times 2017-04-21 09:21:57 +02:00
Dennis Klein
bbc8da54b4 clean redundant doxygen comments 2017-04-21 09:21:57 +02:00
Dennis Klein
91831ff701 print debug output immediately
This helps in the cases when get killed by the ctest timeout.
2017-04-21 09:21:57 +02:00
Dennis Klein
a1fe478ce7 fix more -Winconsistent-missing-override warnings 2017-04-20 11:07:50 +02:00
Dennis Klein
132ae69953 add startup and linger times for pubsub 2017-04-20 11:07:50 +02:00
Alexey Rybalchenko
541538e3de only reset sockets if needed 2017-04-20 11:07:50 +02:00
Alexey Rybalchenko
c51575f88c fix clang++ -Winconsistend-missing-override warnings 2017-04-20 11:07:50 +02:00
Dennis Klein
f963a06e25 make connecting channel wait loop more flexible 2017-04-20 11:07:50 +02:00
Alexey Rybalchenko
ee0d2e0c55 add debug output to test devices 2017-04-20 11:07:50 +02:00
Dennis Klein
218af15bbb ensure that FairMQ.Protocols is not run in parallel
The testsuite uses hardcoded system resources (TCP ports)
and is consequently not thread-safe.
2017-04-20 11:07:50 +02:00
Dennis Klein
d866589be1 Two devices can't share device id 2017-04-20 11:07:50 +02:00
Dennis Klein
bf2b208749 update docs 2017-04-20 11:07:49 +02:00
Alexey Rybalchenko
7caf0a6aae Configurable shmem segment size 2017-04-20 11:07:49 +02:00
Alexey Rybalchenko
ac7017deb5 Re-enable rate limiting in benchmarkSampler 2017-04-20 11:07:49 +02:00
Alexey Rybalchenko
5aaf27bf02 Refactor the transport interface
- give transport Initialize() method with access to device config.
 - avoid using global context in the transport.
 - simplify shutdown procedure (no need for extra thread).
2017-04-20 11:07:49 +02:00