DUNE-DAQ
DUNE Trigger and Data Acquisition software
|
TokenManager keeps track of the number of in-flight trigger decisions. More...
#include <TokenManager.hpp>
Public Member Functions | |
TokenManager (const std::string &connection_name, int initial_tokens, daqdataformats::run_number_t run_number, std::shared_ptr< LivetimeCounter > livetime_counter) | |
virtual | ~TokenManager () |
TokenManager (TokenManager const &)=delete | |
TokenManager (TokenManager &&)=default | |
TokenManager & | operator= (TokenManager const &)=delete |
TokenManager & | operator= (TokenManager &&)=default |
int | get_n_tokens () const |
bool | triggers_allowed () const |
void | trigger_sent (dfmessages::trigger_number_t) |
Private Member Functions | |
void | receive_token (dfmessages::TriggerDecisionToken &token) |
Private Attributes | |
std::string | m_connection_name |
std::atomic< bool > | m_running_flag |
std::atomic< int > | m_n_tokens |
std::set< dfmessages::trigger_number_t > | m_open_trigger_decisions |
std::mutex | m_open_trigger_decisions_mutex |
daqdataformats::run_number_t | m_run_number |
std::shared_ptr< LivetimeCounter > | m_livetime_counter |
std::chrono::time_point< std::chrono::steady_clock > | m_open_trigger_time |
std::shared_ptr< iomanager::ReceiverConcept< dfmessages::TriggerDecisionToken > > | m_token_receiver |
TokenManager keeps track of the number of in-flight trigger decisions.
TokenManager implements a credit-based system for trigger inhibits. It is constructed with an initial number of tokens and a queue of dfmessages::TriggerDecisionToken. When a trigger decision is sent, the number of tokens is decremented, and when a TriggerDecisionToken is received on the queue, the number of tokens is incremented. When the count of available tokens reaches zero, no further TriggerDecisions may be issued.
Definition at line 39 of file TokenManager.hpp.
dunedaq::trigger::TokenManager::TokenManager | ( | const std::string & | connection_name, |
int | initial_tokens, | ||
daqdataformats::run_number_t | run_number, | ||
std::shared_ptr< LivetimeCounter > | livetime_counter ) |
Definition at line 19 of file TokenManager.cpp.
|
virtual |
Definition at line 35 of file TokenManager.cpp.
|
delete |
|
default |
int dunedaq::trigger::TokenManager::get_n_tokens | ( | ) | const |
Get the number of available tokens
Definition at line 63 of file TokenManager.cpp.
|
default |
|
delete |
|
private |
Definition at line 80 of file TokenManager.cpp.
void dunedaq::trigger::TokenManager::trigger_sent | ( | dfmessages::trigger_number_t | trigger_number | ) |
Notify TokenManager that a trigger decision has been sent. This decreases the number of available tokens by one.
Note: you should call this function before pushing the corresponding TriggerDecision to its output queue. If you do these steps in the other order, the TriggerComplete message may be returned before TokenManager is aware of the corresponding trigger decision
Definition at line 69 of file TokenManager.cpp.
|
inline |
Are tokens currently available, to allow sending of new trigger decisions?
Definition at line 62 of file TokenManager.hpp.
|
private |
Definition at line 78 of file TokenManager.hpp.
|
private |
Definition at line 90 of file TokenManager.hpp.
|
private |
Definition at line 83 of file TokenManager.hpp.
|
private |
Definition at line 86 of file TokenManager.hpp.
|
private |
Definition at line 87 of file TokenManager.hpp.
|
private |
Definition at line 93 of file TokenManager.hpp.
|
private |
Definition at line 89 of file TokenManager.hpp.
|
private |
Definition at line 81 of file TokenManager.hpp.
|
private |
Definition at line 96 of file TokenManager.hpp.