DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
iomanager
include
iomanager
SchemaUtils.hpp
Go to the documentation of this file.
1
11
#ifndef IOMANAGER_INCLUDE_IOMANAGER_SCHEMAUTILS_HPP_
12
#define IOMANAGER_INCLUDE_IOMANAGER_SCHEMAUTILS_HPP_
13
14
#include "
confmodel/Connection.hpp
"
15
#include "
confmodel/NetworkConnection.hpp
"
16
#include "
confmodel/Service.hpp
"
17
#include "
utilities/get_ips.hpp
"
18
19
#include <functional>
20
#include <regex>
21
#include <string>
22
23
namespace
dunedaq::iomanager
{
24
25
struct
ConnectionId
26
{
27
std::string
uid
{
""
};
28
std::string
data_type
{
""
};
29
std::string
tag
{
""
};
30
std::string
session
{
""
};
31
32
ConnectionId
() {}
33
34
ConnectionId
(std::string
uid
, std::string
data_type
, std::string
tag
=
""
, std::string
session
=
""
)
35
:
uid
(
uid
)
36
,
data_type
(
data_type
)
37
,
tag
(
tag
)
38
,
session
(
session
)
39
{
40
}
41
42
explicit
ConnectionId
(
const
confmodel::Connection
* cfg)
43
:
uid
(cfg->UID())
44
,
data_type
(cfg->get_data_type())
45
{
46
}
47
};
48
49
inline
bool
50
operator<
(
ConnectionId
const
& l,
ConnectionId
const
& r)
51
{
52
if
(l.session == r.session || l.session ==
""
|| r.session ==
""
) {
53
if
(l.data_type == r.data_type) {
54
if
(l.uid == r.uid) {
55
return
l.tag < r.tag;
56
}
57
return
l.uid < r.uid;
58
}
59
return
l.data_type < r.data_type;
60
}
61
return
l.session < r.session;
62
}
63
inline
bool
64
operator==
(
ConnectionId
const
& l,
ConnectionId
const
& r)
65
{
66
return
(l.session ==
""
|| r.session ==
""
|| l.session == r.session) && l.uid == r.uid && l.tag == r.tag &&
67
l.data_type == r.data_type;
68
}
69
70
inline
bool
71
is_match
(
ConnectionId
const
& search,
ConnectionId
const
&
check
)
72
{
73
if
(search.
data_type
!=
check
.data_type)
74
return
false
;
75
76
if
(search.
session
!=
check
.session && search.
session
!=
""
&&
check
.session !=
""
)
77
return
false
;
78
79
std::regex search_ex(search.
uid
);
80
return
std::regex_match(
check
.uid, search_ex);
81
}
82
83
inline
std::string
84
to_string
(
const
ConnectionId
& conn_id)
85
{
86
if
(conn_id.
session
!=
""
) {
87
return
conn_id.
session
+
"/"
+ conn_id.
uid
+ (conn_id.
tag
!=
""
?
"+"
+ conn_id.
tag
:
""
) +
"@@"
+
88
conn_id.
data_type
;
89
}
90
return
conn_id.
uid
+ (conn_id.
tag
!=
""
?
"+"
+ conn_id.
tag
:
""
) +
"@@"
+ conn_id.
data_type
;
91
}
92
93
inline
std::string
94
get_uri_for_connection
(
const
confmodel::NetworkConnection
* netCon)
95
{
96
std::string
uri
=
""
;
97
if
(netCon) {
98
TLOG_DEBUG
(45) <<
"Getting URI for network connection "
<< netCon->
UID
();
99
auto
service = netCon->
get_associated_service
();
100
auto
protocol = service->get_protocol();
101
if
(protocol ==
"tcp"
) {
102
103
std::string port =
"*"
;
104
if
(service->get_port() && service->get_port() != 0) {
105
port = std::to_string(service->get_port());
106
}
107
auto
iface = service->get_eth_device_name();
108
uri
= std::string(service->get_protocol() +
"://"
+
dunedaq::utilities::get_interface_ip
(iface) +
":"
+ port);
109
}
else
if
(protocol ==
"inproc"
) {
110
uri
= std::string(service->get_protocol() +
"://"
+ service->get_path());
111
}
112
}
113
return
uri
;
114
}
115
116
}
// namespace dunedaq::iomanager
117
118
namespace
std
{
119
120
template
<>
121
struct
hash<
dunedaq
::iomanager::ConnectionId>
122
{
123
std::size_t
operator()
(
const
dunedaq::iomanager::ConnectionId
& conn_id)
const
124
{
125
return
std::hash<std::string>()(conn_id.
session
+ conn_id.
uid
+ conn_id.
tag
+ conn_id.
data_type
);
126
}
127
};
128
129
}
// namespace std
130
131
#endif
// IOMANAGER_INCLUDE_IOMANAGER_SCHEMAUTILS_HPP_
check
static void check(std::vector< conffwk::ConfigurationChange * > &changes, const InheritanceData &inheritance, const std::set< std::string > &class_names, const OksConfiguration::SMap &objects, const std::string &obj_class, const std::string &obj_id, const char action)
Definition
OksConfiguration.cpp:981
dunedaq::conffwk::DalObject::UID
const std::string & UID() const noexcept
Definition
DalObject.hpp:135
dunedaq::confmodel::Connection
Definition
Connection.hpp:20
dunedaq::confmodel::NetworkConnection
Definition
NetworkConnection.hpp:32
dunedaq::confmodel::NetworkConnection::get_associated_service
const dunedaq::confmodel::Service * get_associated_service() const
Get "associated_service" relationship value. Service provided by this connection.
Definition
NetworkConnection.hpp:153
get_ips.hpp
Connection.hpp
NetworkConnection.hpp
Service.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
dunedaq::iomanager
Definition
IOManager.hxx:19
dunedaq::iomanager::is_match
bool is_match(ConnectionId const &search, ConnectionId const &check)
Definition
SchemaUtils.hpp:71
dunedaq::iomanager::to_string
std::string to_string(const ConnectionId &conn_id)
Definition
SchemaUtils.hpp:84
dunedaq::iomanager::operator<
bool operator<(ConnectionRegistration const &l, ConnectionRegistration const &r)
Definition
ConfigClientStructs.hpp:118
dunedaq::iomanager::get_uri_for_connection
std::string get_uri_for_connection(const confmodel::NetworkConnection *netCon)
Definition
SchemaUtils.hpp:94
dunedaq::iomanager::operator==
bool operator==(ConnectionId const &l, ConnectionId const &r)
Definition
SchemaUtils.hpp:64
dunedaq::utilities::get_interface_ip
std::string get_interface_ip(std::string eth_device_name, bool throw_if_missing=false)
Definition
get_ips.hpp:73
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::uri
Unsupported std::string uri Execution of command std::string error Failed to create CommandFacility uri
Definition
Issues.hpp:77
session
Definition
session.py:1
std
Definition
SchemaUtils.hpp:118
dunedaq::iomanager::ConnectionId
Definition
SchemaUtils.hpp:26
dunedaq::iomanager::ConnectionId::uid
std::string uid
Definition
SchemaUtils.hpp:27
dunedaq::iomanager::ConnectionId::tag
std::string tag
Definition
SchemaUtils.hpp:29
dunedaq::iomanager::ConnectionId::ConnectionId
ConnectionId()
Definition
SchemaUtils.hpp:32
dunedaq::iomanager::ConnectionId::data_type
std::string data_type
Definition
SchemaUtils.hpp:28
dunedaq::iomanager::ConnectionId::session
std::string session
Definition
SchemaUtils.hpp:30
dunedaq::iomanager::ConnectionId::ConnectionId
ConnectionId(std::string uid, std::string data_type, std::string tag="", std::string session="")
Definition
SchemaUtils.hpp:34
dunedaq::iomanager::ConnectionId::ConnectionId
ConnectionId(const confmodel::Connection *cfg)
Definition
SchemaUtils.hpp:42
std::hash< dunedaq::iomanager::ConnectionId >::operator()
std::size_t operator()(const dunedaq::iomanager::ConnectionId &conn_id) const
Definition
SchemaUtils.hpp:123
Generated on
for DUNE-DAQ by
1.17.0