Belle II Software development
|
Standard distributor app: receive data via a raw connection (e.g. More...
#include <ZMQDistributor.h>
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. | |
void | main () |
Start the main loop polling on the output and monitoring connections and eventually also on the input if the output is ready. | |
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 |
Handle stop, start and terminate messages as described above. | |
void | handleInput () final |
Pass the message from the input connection to the output connection (only data messages) | |
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< ZMQParent > | m_parent |
Pointer to the ZMQParent to be used as base for all connections. | |
std::unique_ptr< ZMQRawInput > | m_input |
Pointer to the input connection. Should be set in initialize. | |
std::unique_ptr< ZMQLoadBalancedOutput > | m_output |
Pointer to the output connection. Should be set in initialize. | |
std::unique_ptr< ZMQSimpleConnection > | m_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. | |
unsigned int | m_maximalBufferSize = 80'000'000 |
Parameter: buffer size for storing input messages. | |
bool | m_expressRecoMode = 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. | |
Standard distributor app: receive data via a raw connection (e.g.
from event builder) and send them out to any ready worker (via a load-balanced connection). If expressRecoMode is not set, wait until a worker is ready (otherwise dismiss events). As there are not signal messages on input, does not react on anything from input. 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. When receiving a start on monitoring, it clears the output. When receiving a terminate on monitoring, it sends out a terminate message to all clients and terminated itself.
Definition at line 33 of file ZMQDistributor.h.
|
finalprotectedvirtual |
Add the parameters to the cmd line arguments.
Reimplemented from ZMQStandardApp< ZMQRawInput, ZMQLoadBalancedOutput >.
Definition at line 13 of file ZMQDistributor.cc.
|
privateinherited |
Helper function to check, if the timeout should happen.
Definition at line 111 of file ZMQApp.details.h.
|
protectedvirtualinherited |
Using the connections, fill up a buffer with the content to be monitored.
Definition at line 92 of file ZMQApp.details.h.
|
finalprotectedvirtual |
Handle stop, start and terminate messages as described above.
Reimplemented from ZMQStandardApp< ZMQRawInput, ZMQLoadBalancedOutput >.
Definition at line 38 of file ZMQDistributor.cc.
|
finalprotectedvirtual |
Pass the message from the input connection to the output connection (only data messages)
Reimplemented from ZMQStandardApp< ZMQRawInput, ZMQLoadBalancedOutput >.
Definition at line 62 of file ZMQDistributor.cc.
|
privateinherited |
Handle an incoming message on the monitoring socket by either calling handleExternalSignal() or by passing on the monitor JSONs of the connections.
Definition at line 115 of file ZMQApp.details.h.
|
protectedvirtualinherited |
Will get called for every message on the output connection. Can be overridden in a derived class. Calls handleIncomingData by default.
Definition at line 88 of file ZMQApp.details.h.
|
finalprotectedvirtual |
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.
Reimplemented from ZMQStandardApp< ZMQRawInput, ZMQLoadBalancedOutput >.
Definition at line 53 of file ZMQDistributor.cc.
|
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.
|
finalprotectedvirtual |
Initialize the two connections using the command line arguments.
Reimplemented from ZMQStandardApp< ZMQRawInput, ZMQLoadBalancedOutput >.
Definition at line 31 of file ZMQDistributor.cc.
|
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.
|
protectedinherited |
Poll until a single event is retreived.
Definition at line 98 of file ZMQApp.details.h.
|
protectedinherited |
Helper function to reset the start time and the remaining time.
Definition at line 96 of file ZMQApp.details.h.
|
protectedinherited |
Check if the main loop will be exited on next occasion. Can be set via the "m_terminate" flag.
Definition at line 94 of file ZMQApp.details.h.
|
privateinherited |
Helper function to update the remaining time.
Definition at line 113 of file ZMQApp.details.h.
|
private |
Parameter: Do not wait for a ready worker if set to true, but dismiss the incoming event.
Definition at line 54 of file ZMQDistributor.h.
|
protectedinherited |
|
private |
Parameter: input address.
Definition at line 48 of file ZMQDistributor.h.
|
privateinherited |
|
private |
Parameter: buffer size for storing input messages.
Definition at line 52 of file ZMQDistributor.h.
|
protectedinherited |
|
protectedinherited |
|
privateinherited |
|
protectedinherited |
|
private |
Parameter: output address.
Definition at line 50 of file ZMQDistributor.h.
|
protectedinherited |
|
privateinherited |
|
privateinherited |
|
private |
Parameter: how long to wait after no events come anymore.
Definition at line 56 of file ZMQDistributor.h.
|
protectedinherited |
|
protectedinherited |