DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
QueueRegistry.cpp
Go to the documentation of this file.
1
12
13#include <map>
14#include <memory>
15#include <string>
16
17namespace dunedaq::iomanager {
18
19std::unique_ptr<QueueRegistry> QueueRegistry::s_instance = nullptr;
20
21QueueRegistry&
23{
24 if (!s_instance) {
25 s_instance.reset(new QueueRegistry());
26 }
27 return *s_instance;
28}
29
30void
31QueueRegistry::configure(const std::vector<const confmodel::Queue*>& configs, opmonlib::OpMonManager & mgr)
32{
33 if (m_configured) {
34 throw QueueRegistryConfigured(ERS_HERE);
35 }
36
37 m_queue_configs = configs;
38
39 mgr.register_node("queues", m_opmon_link);
40
41 m_configured = true;
42}
43
44
45bool
46QueueRegistry::has_queue(const std::string& uid, const std::string& data_type) const
47{
48 for (auto& config : m_queue_configs) {
49 if (config->UID() == uid && config->get_data_type() == data_type) {
50 return true;
51 }
52 }
53
54 return false;
55}
56
57std::set<std::string>
58QueueRegistry::get_datatypes(const std::string& uid) const
59{
60 std::set<std::string> output;
61
62 for (auto& config : m_queue_configs) {
63 if (config->UID() == uid) {
64 output.insert(config->get_data_type());
65 }
66 }
67
68 return output;
69}
70
71} // namespace dunedaq::iomanager
#define ERS_HERE
static QueueRegistry & get()
Get a handle to the QueueRegistry.
static std::unique_ptr< QueueRegistry > s_instance
std::set< std::string > get_datatypes(std::string const &uid) const
void configure(const std::vector< const confmodel::Queue * > &configs, opmonlib::OpMonManager &)
Configure the QueueRegistry.
std::vector< const confmodel::Queue * > m_queue_configs
bool has_queue(std::string const &uid, std::string const &data_type) const
std::shared_ptr< opmonlib::OpMonLink > m_opmon_link
void register_node(ElementId name, NewNodePtr)