DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
trigger
src
trigger
TokenManager.hpp
Go to the documentation of this file.
1
8
9
#ifndef TRIGGER_SRC_TRIGGER_TOKENMANAGER_HPP_
10
#define TRIGGER_SRC_TRIGGER_TOKENMANAGER_HPP_
11
12
#include "
LivetimeCounter.hpp
"
13
14
#include "
dfmessages/TriggerDecisionToken.hpp
"
15
#include "
dfmessages/Types.hpp
"
16
#include "
iomanager/Receiver.hpp
"
17
18
#include <atomic>
19
#include <chrono>
20
#include <memory>
21
#include <set>
22
#include <string>
23
#include <thread>
24
25
namespace
dunedaq
{
26
namespace
trigger
{
27
39
class
TokenManager
40
{
41
public
:
42
TokenManager
(
const
std::string& connection_name,
43
int
initial_tokens,
44
daqdataformats::run_number_t
run_number,
45
std::shared_ptr<LivetimeCounter> livetime_counter);
46
47
virtual
~TokenManager
();
48
49
TokenManager
(
TokenManager
const
&) =
delete
;
50
TokenManager
(
TokenManager
&&) =
default
;
51
TokenManager
&
operator=
(
TokenManager
const
&) =
delete
;
52
TokenManager
&
operator=
(
TokenManager
&&) =
default
;
53
57
int
get_n_tokens
()
const
;
58
62
bool
triggers_allowed
()
const
{
return
get_n_tokens
() > 0; }
63
72
void
trigger_sent
(
dfmessages::trigger_number_t
);
73
74
private
:
75
// The main thread
76
void
receive_token
(
dfmessages::TriggerDecisionToken
& token);
77
78
std::string
m_connection_name
;
79
80
// Are we running?
81
std::atomic<bool>
m_running_flag
;
82
// How many tokens are currently available?
83
std::atomic<int>
m_n_tokens
;
84
85
// The currently-in-flight trigger decisions, and a mutex to guard it
86
std::set<dfmessages::trigger_number_t>
m_open_trigger_decisions
;
87
std::mutex
m_open_trigger_decisions_mutex
;
88
89
daqdataformats::run_number_t
m_run_number
;
90
std::shared_ptr<LivetimeCounter>
m_livetime_counter
;
91
92
// open strigger report time
93
std::chrono::time_point<std::chrono::steady_clock>
m_open_trigger_time
;
94
95
// the IOManager receiver instance
96
std::shared_ptr<iomanager::ReceiverConcept<dfmessages::TriggerDecisionToken>>
m_token_receiver
;
97
};
98
99
}
// namespace trigger
100
}
// namespace dunedaq
101
102
#endif
// TRIGGER_SRC_TRIGGER_TOKENMANAGER_HPP_
LivetimeCounter.hpp
TriggerDecisionToken.hpp
dunedaq::trigger::TokenManager::triggers_allowed
bool triggers_allowed() const
Definition
TokenManager.hpp:62
dunedaq::trigger::TokenManager::m_livetime_counter
std::shared_ptr< LivetimeCounter > m_livetime_counter
Definition
TokenManager.hpp:90
dunedaq::trigger::TokenManager::TokenManager
TokenManager(TokenManager &&)=default
dunedaq::trigger::TokenManager::m_token_receiver
std::shared_ptr< iomanager::ReceiverConcept< dfmessages::TriggerDecisionToken > > m_token_receiver
Definition
TokenManager.hpp:96
dunedaq::trigger::TokenManager::m_open_trigger_decisions
std::set< dfmessages::trigger_number_t > m_open_trigger_decisions
Definition
TokenManager.hpp:86
dunedaq::trigger::TokenManager::m_n_tokens
std::atomic< int > m_n_tokens
Definition
TokenManager.hpp:83
dunedaq::trigger::TokenManager::receive_token
void receive_token(dfmessages::TriggerDecisionToken &token)
Definition
TokenManager.cpp:80
dunedaq::trigger::TokenManager::operator=
TokenManager & operator=(TokenManager const &)=delete
dunedaq::trigger::TokenManager::TokenManager
TokenManager(const std::string &connection_name, int initial_tokens, daqdataformats::run_number_t run_number, std::shared_ptr< LivetimeCounter > livetime_counter)
Definition
TokenManager.cpp:19
dunedaq::trigger::TokenManager::m_run_number
daqdataformats::run_number_t m_run_number
Definition
TokenManager.hpp:89
dunedaq::trigger::TokenManager::m_open_trigger_decisions_mutex
std::mutex m_open_trigger_decisions_mutex
Definition
TokenManager.hpp:87
dunedaq::trigger::TokenManager::m_running_flag
std::atomic< bool > m_running_flag
Definition
TokenManager.hpp:81
dunedaq::trigger::TokenManager::TokenManager
TokenManager(TokenManager const &)=delete
dunedaq::trigger::TokenManager::get_n_tokens
int get_n_tokens() const
Definition
TokenManager.cpp:63
dunedaq::trigger::TokenManager::trigger_sent
void trigger_sent(dfmessages::trigger_number_t)
Definition
TokenManager.cpp:69
dunedaq::trigger::TokenManager::m_open_trigger_time
std::chrono::time_point< std::chrono::steady_clock > m_open_trigger_time
Definition
TokenManager.hpp:93
dunedaq::trigger::TokenManager::~TokenManager
virtual ~TokenManager()
Definition
TokenManager.cpp:35
dunedaq::trigger::TokenManager::m_connection_name
std::string m_connection_name
Definition
TokenManager.hpp:78
dunedaq::trigger::TokenManager::operator=
TokenManager & operator=(TokenManager &&)=default
Types.hpp
Receiver.hpp
dunedaq::daqdataformats::run_number_t
uint32_t run_number_t
Definition
Types.hpp:17
dunedaq::dfmessages::trigger_number_t
daqdataformats::trigger_number_t trigger_number_t
Copy daqdataformats::trigger_number_t.
Definition
Types.hpp:35
dunedaq::trigger
Definition
AlgorithmPlugins.hpp:24
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::dfmessages::TriggerDecisionToken
Represents a message indicating that the DataFlow has one additional buffer available.
Definition
TriggerDecisionToken.hpp:24
Generated on
for DUNE-DAQ by
1.17.0