![]() |
Belle II Software
light-2303-iriomote
|
Base class for every connection with virtual functions to be implemented: More...
#include <ZMQConnection.h>


Public Types | |
| using | ReactorFunction = std::function< void(void)> |
| Typedef of a function which will be called if a connection has a message. | |
Public Member Functions | |
| virtual | ~ZMQConnection ()=default |
| Virtual default destructor. | |
| virtual bool | isReady () const |
| Return true of this connection is able to send messages right now. Can be overloaded in derived classes. | |
| virtual std::vector< zmq::socket_t * > | getSockets () const =0 |
| Return the list of sockets which should be polled on to check for incoming messages. Can be empty. Must be overloaded in derived classes. | |
| virtual std::string | getMonitoringJSON () const |
| Convert the stored monitoring values to a JSON string ready for sending out via a message. | |
| template<class AClass > | |
| void | log (const std::string &key, const AClass &value) |
| Store a value under a certain key. Different types of values can be stored, namely long, double or string. Mixtures are not allowed for a given key. | |
| void | increment (const std::string &key) |
| Increment the value with the given key (only numerical values). If not present, set to 1. | |
| void | decrement (const std::string &key) |
| Decrement the value with the given key (only numerical values). If not present, set to -1. | |
| template<size_t MAX_SIZE = 100> | |
| void | average (const std::string &key, double value) |
| Instead of storeing the double value directly under the given key, store the average of the last MAX_SIZE values. | |
| template<size_t AVERAGE_SIZE = 2000> | |
| void | timeit (const std::string &key) |
| Measure the rate of calls with the same key every AVERAGE_SIZE calls (and also display the last time AVERAGE_SIZE was reached under <key>_last_measurement) | |
| void | logTime (const std::string &key) |
| Store the current time as a string under the given key. | |
Static Public Member Functions | |
| static bool | poll (const std::map< const ZMQConnection *, ReactorFunction > &connectionList, int timeout) |
| Poll on the given connections and call the attached function if a messages comes in. More... | |
| static bool | hasMessage (const ZMQConnection *connection) |
| Check if the given connection as an incoming message (right now, no waiting). | |
Private Attributes | |
| std::map< std::string, std::variant< long, double, std::string > > | m_monitoring |
| Internal storage of all stored values. | |
| std::unordered_map< std::string, std::tuple< std::vector< double >, size_t > > | m_averages |
| Internal storage of the previous values when calculating averages. | |
| std::unordered_map< std::string, std::tuple< unsigned long, std::chrono::system_clock::time_point > > | m_timeCounters |
| Internal storage how often the timeit function for a given key was called and when it has last reached MAX_SIZE. | |
Base class for every connection with virtual functions to be implemented:
Additionally, it has static functions for polling on a list of connections or checking if a specific connection has messages.
Definition at line 30 of file ZMQConnection.h.
|
static |
Poll on the given connections and call the attached function if a messages comes in.
If after timeout milliseconds still no message is received, return anyways. If timeout is 0, do not wait. If timeout is -1, wait infinitely.
Returns true if a message was received on any socket, false otherwise. Attention: in case of an interrupted system call (e.g. because a signal was received) the function might return anyways with a negative result even before the timeout!
Definition at line 27 of file ZMQConnection.cc.