Belle II Software  release-08-01-10
ZMQCollector Class Reference

Normal collector app: receive messages on the input reacting with a confirmation message and sends them out via a load-balanced connection to ready workers. More...

#include <ZMQCollector.h>

Inheritance diagram for ZMQCollector:
Collaboration diagram for ZMQCollector:

Public Member Functions

void initFromConsole (const std::string &description, int argc, char *argv[])
 Should be called before the main() function to initialize the connections using the paremeters given on command line. More...
 
void main ()
 Start the main loop polling on the output and monitoring connections and eventually also on the input if the output is ready. More...
 

Protected Member Functions

void initialize () final
 Initialize the two connections using the command line arguments.
 
void addOptions (po::options_description &desc) final
 Add the parameters to the cmd line arguments.
 
void handleExternalSignal (EMessageTypes type) final
 Send a stop message on stop or clear the counters on start from the monitoring connection.
 
void handleInput () final
 Pass the message from the input connection to the output connection (if there is a message)
 
void handleTimeout () final
 When a timeout is set (= we are waiting for all messages after a stop), send a stop message once we have not seen any more events.
 
virtual void handleOutput ()
 Will get called for every message on the output connection. Can be overridden in a derived class. Calls handleIncomingData by default.
 
virtual void fillMonitoringJSON (std::stringstream &buffer) const
 Using the connections, fill up a buffer with the content to be monitored.
 
bool terminated () const
 Check if the main loop will be exited on next occasion. Can be set via the "m_terminate" flag.
 
void resetTimer ()
 Helper function to reset the start time and the remaining time.
 
void pollEvent (bool pollOnInput)
 Poll until a single event is retreived.
 

Protected Attributes

std::shared_ptr< ZMQParentm_parent
 Pointer to the ZMQParent to be used as base for all connections.
 
std::unique_ptr< ZMQConfirmedInputm_input
 Pointer to the input connection. Should be set in initialize.
 
std::unique_ptr< ZMQLoadBalancedOutputm_output
 Pointer to the output connection. Should be set in initialize.
 
std::unique_ptr< ZMQSimpleConnectionm_monitor
 Pointer to the monitoring connection. Should be set in initialize.
 
bool m_terminate
 Can be set by functions to terminate the main loop at the next possibility.
 
unsigned int m_timeout
 If set to a value != 0, will call handleTimeout with this frequency (in seconds).
 
bool m_monitorHasPriority
 Flag to break out of the polling loop to check for monitoring messages. Except for the finalcollector you probably do not want this.
 

Private Member Functions

bool checkTimer ()
 Helper function to check, if the timeout should happen.
 
void updateTimer ()
 Helper function to update the remaining time.
 
void handleMonitoring ()
 Handle an incoming message on the monitoring socket by either calling handleExternalSignal() or by passing on the monitor JSONs of the connections.
 

Private Attributes

std::string m_inputAddress
 Parameter: input address.
 
std::string m_outputAddress
 Parameter: output address.
 
bool m_lax = false
 Parameter: Do not wait for a ready worker if set to true, but dismiss the incoming event.
 
unsigned int m_stopWaitingTime = 2
 Parameter: how long to wait after no events come anymore.
 
HLTMainLoop m_mainLoop
 Internal signal handler.
 
std::string m_monitoringAddress
 Storage for the monitoring address for the cmd arguments.
 
int m_remainingTime
 Counter for the remaining time until a timeout happens.
 
std::chrono::system_clock::time_point m_start
 Start time for the timeout.
 

Detailed Description

Normal collector app: receive messages on the input reacting with a confirmation message and sends them out via a load-balanced connection to ready workers.

Apart from the connection-typical behavior, it reacts on termination messages by terminating. When receiving a stop on monitoring, it starts a counter. Once there has not been any event for N second, it sends a stop to all clients. (even if not all clients have sent a stop) When receiving a start on monitoring, it clears the input and output stop counters.

Definition at line 32 of file ZMQCollector.h.

Member Function Documentation

◆ initFromConsole()

void initFromConsole ( const std::string &  description,
int  argc,
char *  argv[] 
)
inherited

Should be called before the main() function to initialize the connections using the paremeters given on command line.

Custom implementations should implement the addOptions function to pass the command line arguments correctly. Calls the initialize function (which should also be overridden).

Definition at line 54 of file ZMQApp.details.h.

◆ main()

void main
inherited

Start the main loop polling on the output and monitoring connections and eventually also on the input if the output is ready.

Calls the functions handleExternalSignal, handleInput, handleOutput and handleTimeout as described in the documentation of this class.

Definition at line 61 of file ZMQApp.details.h.


The documentation for this class was generated from the following files: