DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
iomanager
include
iomanager
network
NetworkManager.hpp
Go to the documentation of this file.
1
9
10
#ifndef IOMANAGER_INCLUDE_IOMANAGER_NETWORK_NETWORKMANAGER_HPP_
11
#define IOMANAGER_INCLUDE_IOMANAGER_NETWORK_NETWORKMANAGER_HPP_
12
13
#include "
iomanager/network/ConfigClient.hpp
"
14
#include "
iomanager/network/NetworkIssues.hpp
"
15
16
#include "
ipm/Receiver.hpp
"
17
#include "
ipm/Sender.hpp
"
18
#include "
ipm/Subscriber.hpp
"
19
#include "
opmonlib/OpMonManager.hpp
"
20
21
#include "
confmodel/ConnectivityService.hpp
"
22
#include "
confmodel/NetworkConnection.hpp
"
23
24
#include <atomic>
25
#include <chrono>
26
#include <functional>
27
#include <memory>
28
#include <mutex>
29
#include <set>
30
#include <string>
31
#include <thread>
32
#include <unordered_map>
33
#include <utility>
34
#include <vector>
35
36
namespace
dunedaq::iomanager
{
37
38
class
NetworkManager
39
{
40
41
public
:
42
static
NetworkManager
&
get
();
43
~NetworkManager
() {
reset
(); }
44
45
void
configure
(
const
std::string& session_name,
46
const
std::vector<const confmodel::NetworkConnection*>& connections,
47
const
confmodel::ConnectivityService
* conn_svc,
48
dunedaq::opmonlib::OpMonManager
&);
49
void
reset
();
50
void
shutdown
();
51
52
std::shared_ptr<ipm::Receiver>
get_receiver
(
ConnectionId
const
& conn_id);
53
std::shared_ptr<ipm::Sender>
get_sender
(
ConnectionId
const
& conn_id);
54
55
void
remove_sender
(
ConnectionId
const
& conn_id);
56
57
bool
is_pubsub_connection
(
ConnectionId
const
& conn_id)
const
;
58
59
ConnectionResponse
get_connections
(
ConnectionId
const
& conn_id,
bool
restrict_single =
false
)
const
;
60
ConnectionResponse
get_preconfigured_connections
(
ConnectionId
const
& conn_id)
const
;
61
62
std::set<std::string>
get_datatypes
(std::string
const
& uid)
const
;
63
64
private
:
65
// NetworkManager is a singleton
66
static
std::unique_ptr<NetworkManager>
s_instance
;
67
68
NetworkManager
() =
default
;
69
70
NetworkManager
(
NetworkManager
const
&) =
delete
;
71
NetworkManager
(
NetworkManager
&&) =
delete
;
72
NetworkManager
&
operator=
(
NetworkManager
const
&) =
delete
;
73
NetworkManager
&
operator=
(
NetworkManager
&&) =
delete
;
74
75
std::shared_ptr<ipm::Receiver>
create_receiver
(std::vector<ConnectionInfo> connections,
ConnectionId
const
& conn_id);
76
std::shared_ptr<ipm::Sender>
create_sender
(
ConnectionInfo
connection);
77
78
std::vector<std::string>
get_pubsub_connection_strings
(std::vector<ConnectionInfo>
const
& connections);
79
void
update_subscribers
();
80
81
std::unordered_map<ConnectionId, const confmodel::NetworkConnection*>
m_preconfigured_connections
;
82
std::unordered_map<ConnectionId, std::shared_ptr<ipm::Receiver>>
m_receiver_plugins
;
83
std::unordered_map<ConnectionId, std::shared_ptr<ipm::Sender>>
m_sender_plugins
;
84
std::shared_ptr<dunedaq::opmonlib::OpMonLink>
m_sender_opmon_link
{ std::make_shared<dunedaq::opmonlib::OpMonLink>() };
85
std::shared_ptr<dunedaq::opmonlib::OpMonLink>
m_receiver_opmon_link
{
86
std::make_shared<dunedaq::opmonlib::OpMonLink>()
87
};
88
static
void
register_monitorable_node
(std::shared_ptr<opmonlib::MonitorableObject> conn,
89
std::shared_ptr<opmonlib::OpMonLink> link,
90
const
std::string& name,
91
bool
is_pubsub);
92
93
std::unordered_map<ConnectionId, std::shared_ptr<ipm::Subscriber>>
m_subscriber_plugins
;
94
std::unique_ptr<std::thread>
m_subscriber_update_thread
;
95
std::atomic<bool>
m_subscriber_update_thread_running
{
false
};
96
97
std::unique_ptr<ConfigClient>
m_config_client
;
98
std::chrono::milliseconds
m_config_client_interval
{ 1000 };
99
100
mutable
std::mutex
m_receiver_plugin_map_mutex
;
101
mutable
std::mutex
m_sender_plugin_map_mutex
;
102
mutable
std::mutex
m_subscriber_plugin_map_mutex
;
103
};
104
}
// namespace dunedaq::iomanager
105
106
#endif
// IOMANAGER_INCLUDE_IOMANAGER_NETWORK_NETWORKMANAGER_HPP_
ConfigClient.hpp
NetworkIssues.hpp
OpMonManager.hpp
Subscriber.hpp
dunedaq::confmodel::ConnectivityService
Definition
ConnectivityService.hpp:29
dunedaq::iomanager::NetworkManager::get_preconfigured_connections
ConnectionResponse get_preconfigured_connections(ConnectionId const &conn_id) const
Definition
NetworkManager.cpp:249
dunedaq::iomanager::NetworkManager::configure
void configure(const std::string &session_name, const std::vector< const confmodel::NetworkConnection * > &connections, const confmodel::ConnectivityService *conn_svc, dunedaq::opmonlib::OpMonManager &)
Definition
NetworkManager.cpp:41
dunedaq::iomanager::NetworkManager::m_subscriber_update_thread_running
std::atomic< bool > m_subscriber_update_thread_running
Definition
NetworkManager.hpp:95
dunedaq::iomanager::NetworkManager::m_receiver_plugins
std::unordered_map< ConnectionId, std::shared_ptr< ipm::Receiver > > m_receiver_plugins
Definition
NetworkManager.hpp:82
dunedaq::iomanager::NetworkManager::create_receiver
std::shared_ptr< ipm::Receiver > create_receiver(std::vector< ConnectionInfo > connections, ConnectionId const &conn_id)
Definition
NetworkManager.cpp:289
dunedaq::iomanager::NetworkManager::m_receiver_plugin_map_mutex
std::mutex m_receiver_plugin_map_mutex
Definition
NetworkManager.hpp:100
dunedaq::iomanager::NetworkManager::NetworkManager
NetworkManager(NetworkManager const &)=delete
dunedaq::iomanager::NetworkManager::reset
void reset()
Definition
NetworkManager.cpp:84
dunedaq::iomanager::NetworkManager::m_sender_plugins
std::unordered_map< ConnectionId, std::shared_ptr< ipm::Sender > > m_sender_plugins
Definition
NetworkManager.hpp:83
dunedaq::iomanager::NetworkManager::m_preconfigured_connections
std::unordered_map< ConnectionId, const confmodel::NetworkConnection * > m_preconfigured_connections
Definition
NetworkManager.hpp:81
dunedaq::iomanager::NetworkManager::NetworkManager
NetworkManager()=default
dunedaq::iomanager::NetworkManager::m_subscriber_update_thread
std::unique_ptr< std::thread > m_subscriber_update_thread
Definition
NetworkManager.hpp:94
dunedaq::iomanager::NetworkManager::get_datatypes
std::set< std::string > get_datatypes(std::string const &uid) const
Definition
NetworkManager.cpp:262
dunedaq::iomanager::NetworkManager::get
static NetworkManager & get()
Definition
NetworkManager.cpp:32
dunedaq::iomanager::NetworkManager::m_sender_opmon_link
std::shared_ptr< dunedaq::opmonlib::OpMonLink > m_sender_opmon_link
Definition
NetworkManager.hpp:84
dunedaq::iomanager::NetworkManager::~NetworkManager
~NetworkManager()
Definition
NetworkManager.hpp:43
dunedaq::iomanager::NetworkManager::create_sender
std::shared_ptr< ipm::Sender > create_sender(ConnectionInfo connection)
Definition
NetworkManager.cpp:359
dunedaq::iomanager::NetworkManager::get_sender
std::shared_ptr< ipm::Sender > get_sender(ConnectionId const &conn_id)
Definition
NetworkManager.cpp:170
dunedaq::iomanager::NetworkManager::m_config_client
std::unique_ptr< ConfigClient > m_config_client
Definition
NetworkManager.hpp:97
dunedaq::iomanager::NetworkManager::shutdown
void shutdown()
Definition
NetworkManager.cpp:120
dunedaq::iomanager::NetworkManager::register_monitorable_node
static void register_monitorable_node(std::shared_ptr< opmonlib::MonitorableObject > conn, std::shared_ptr< opmonlib::OpMonLink > link, const std::string &name, bool is_pubsub)
Definition
NetworkManager.cpp:433
dunedaq::iomanager::NetworkManager::NetworkManager
NetworkManager(NetworkManager &&)=delete
dunedaq::iomanager::NetworkManager::operator=
NetworkManager & operator=(NetworkManager &&)=delete
dunedaq::iomanager::NetworkManager::m_sender_plugin_map_mutex
std::mutex m_sender_plugin_map_mutex
Definition
NetworkManager.hpp:101
dunedaq::iomanager::NetworkManager::get_connections
ConnectionResponse get_connections(ConnectionId const &conn_id, bool restrict_single=false) const
Definition
NetworkManager.cpp:211
dunedaq::iomanager::NetworkManager::is_pubsub_connection
bool is_pubsub_connection(ConnectionId const &conn_id) const
Definition
NetworkManager.cpp:201
dunedaq::iomanager::NetworkManager::s_instance
static std::unique_ptr< NetworkManager > s_instance
Definition
NetworkManager.hpp:66
dunedaq::iomanager::NetworkManager::m_config_client_interval
std::chrono::milliseconds m_config_client_interval
Definition
NetworkManager.hpp:98
dunedaq::iomanager::NetworkManager::m_subscriber_plugin_map_mutex
std::mutex m_subscriber_plugin_map_mutex
Definition
NetworkManager.hpp:102
dunedaq::iomanager::NetworkManager::get_receiver
std::shared_ptr< ipm::Receiver > get_receiver(ConnectionId const &conn_id)
Definition
NetworkManager.cpp:151
dunedaq::iomanager::NetworkManager::get_pubsub_connection_strings
std::vector< std::string > get_pubsub_connection_strings(std::vector< ConnectionInfo > const &connections)
Definition
NetworkManager.cpp:274
dunedaq::iomanager::NetworkManager::operator=
NetworkManager & operator=(NetworkManager const &)=delete
dunedaq::iomanager::NetworkManager::remove_sender
void remove_sender(ConnectionId const &conn_id)
Definition
NetworkManager.cpp:192
dunedaq::iomanager::NetworkManager::update_subscribers
void update_subscribers()
Definition
NetworkManager.cpp:404
dunedaq::iomanager::NetworkManager::m_subscriber_plugins
std::unordered_map< ConnectionId, std::shared_ptr< ipm::Subscriber > > m_subscriber_plugins
Definition
NetworkManager.hpp:93
dunedaq::iomanager::NetworkManager::m_receiver_opmon_link
std::shared_ptr< dunedaq::opmonlib::OpMonLink > m_receiver_opmon_link
Definition
NetworkManager.hpp:85
dunedaq::opmonlib::OpMonManager
Definition
OpMonManager.hpp:50
ConnectivityService.hpp
NetworkConnection.hpp
Receiver.hpp
Sender.hpp
dunedaq::iomanager
Definition
IOManager.hxx:19
dunedaq::iomanager::ConnectionId
Definition
SchemaUtils.hpp:26
dunedaq::iomanager::ConnectionInfo
Definition
ConfigClientStructs.hpp:55
dunedaq::iomanager::ConnectionResponse
Definition
ConfigClientStructs.hpp:111
Generated on
for DUNE-DAQ by
1.17.0