Belle II Software development
|
Helper connection hosting both a normal raw and a ROI output and sending to both at the same time. More...
#include <ZMQROIConnection.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 | |
ZMQDataAndROIOutput (const std::string &dataAddress, const std::string &roiAddress, bool addEventSize, const std::shared_ptr< ZMQParent > &parent) | |
Initialize the raw and roi connection. | |
std::string | getMonitoringJSON () const final |
Get the monitoring JSON from the raw connection. | |
std::string | getROIMonitoringJSON () const |
Get the monitoring JSON from the ROI connection. | |
void | handleEvent (std::unique_ptr< ZMQNoIdMessage > message) |
Send the normal data message to raw and the additional message to ROI. | |
void | handleIncomingData () |
Handle both a socket (dis)connect by raw or ROI. | |
bool | isReady () const final |
Ready only when both sockets are ready. | |
std::vector< zmq::socket_t * > | getSockets () const final |
Return both sockets for polling. | |
std::string | getEndPoint () const |
Return the connection string. | |
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. | |
static bool | hasMessage (const ZMQConnection *connection) |
Check if the given connection as an incoming message (right now, no waiting). | |
Private Attributes | |
ZMQRawOutput | m_dataOutput |
The used raw connection. | |
ZMQRawOutput | m_roiOutput |
The used ROI connection. | |
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. | |
Helper connection hosting both a normal raw and a ROI output and sending to both at the same time.
The normal message will be sent to the raw connection whereas the additional message will be sent to the roi connection.
As two connections are hosted also two monitoring JSON can be requested.
Definition at line 70 of file ZMQROIConnection.h.
|
inherited |
Typedef of a function which will be called if a connection has a message.
Definition at line 34 of file ZMQConnection.h.
ZMQDataAndROIOutput | ( | const std::string & | dataAddress, |
const std::string & | roiAddress, | ||
bool | addEventSize, | ||
const std::shared_ptr< ZMQParent > & | parent | ||
) |
Initialize the raw and roi connection.
Definition at line 13 of file ZMQROIConnection.cc.
|
inherited |
Decrement the value with the given key (only numerical values). If not present, set to -1.
Definition at line 37 of file ZMQLogger.cc.
|
inline |
Return the connection string.
Definition at line 90 of file ZMQROIConnection.h.
|
finalvirtual |
Get the monitoring JSON from the raw connection.
Reimplemented from ZMQLogger.
Definition at line 48 of file ZMQROIConnection.cc.
std::string getROIMonitoringJSON | ( | ) | const |
Get the monitoring JSON from the ROI connection.
Definition at line 53 of file ZMQROIConnection.cc.
|
finalvirtual |
Return both sockets for polling.
Implements ZMQConnection.
Definition at line 43 of file ZMQROIConnection.cc.
void handleEvent | ( | std::unique_ptr< ZMQNoIdMessage > | message | ) |
Send the normal data message to raw and the additional message to ROI.
Definition at line 17 of file ZMQROIConnection.cc.
void handleIncomingData | ( | ) |
Handle both a socket (dis)connect by raw or ROI.
Definition at line 28 of file ZMQROIConnection.cc.
|
staticinherited |
Check if the given connection as an incoming message (right now, no waiting).
Definition at line 20 of file ZMQConnection.cc.
|
inherited |
Increment the value with the given key (only numerical values). If not present, set to 1.
Definition at line 32 of file ZMQLogger.cc.
|
finalvirtual |
Ready only when both sockets are ready.
Reimplemented from ZMQConnection.
Definition at line 38 of file ZMQROIConnection.cc.
|
inherited |
Store the current time as a string under the given key.
Definition at line 42 of file ZMQLogger.cc.
|
staticinherited |
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.
|
privateinherited |
Internal storage of the previous values when calculating averages.
Definition at line 60 of file ZMQLogger.h.
|
private |
The used raw connection.
Definition at line 93 of file ZMQROIConnection.h.
|
privateinherited |
Internal storage of all stored values.
Definition at line 58 of file ZMQLogger.h.
|
private |
The used ROI connection.
Definition at line 95 of file ZMQROIConnection.h.
|
privateinherited |
Internal storage how often the timeit function for a given key was called and when it has last reached MAX_SIZE.
Definition at line 62 of file ZMQLogger.h.