DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
oks
src
oks_utils.hpp
Go to the documentation of this file.
1
// DUNE DAQ modification notice:
2
// This file has been modified from the original ATLAS oks source for the DUNE DAQ project.
3
// Fork baseline commit: oks-08-03-04 (2022-04-14).
4
// Renamed since fork: yes (from src/oks_utils.h to src/oks_utils.hpp).
5
6
#ifndef OKS_KERNEL_UTILS_H
7
#define OKS_KERNEL_UTILS_H
8
9
#include "
oks/exceptions.hpp
"
10
11
#include <boost/date_time/gregorian/gregorian_types.hpp>
12
#include <boost/date_time/posix_time/posix_time_types.hpp>
13
14
#include <map>
15
#include <string>
16
17
namespace
dunedaq
{
18
namespace
oks
{
19
20
class
OksClass
;
21
class
OksObject
;
22
class
OksXmlInputStream
;
23
class
OksFile
;
24
struct
OksAliasTable
;
25
class
OksKernel
;
26
27
// read date and time strings from OKS files (oks::Date, oks::Time or Boost ISO strings)
28
29
boost::posix_time::ptime
30
str2time
(
const
char
* value,
size_t
len,
const
char
* file_name =
nullptr
);
31
boost::gregorian::date
32
str2date
(
const
char
* value,
size_t
len);
33
34
// the structure for efficient search of objects to be re-read or to be deleted during reload
35
36
struct
ReloadObjects
37
{
38
39
template
<
typename
T>
40
using
map_str_t
= std::map<std::string, T>;
41
42
std::map<const OksClass*, map_str_t<OksObject*>*>
data
;
43
std::vector<OksObject*>
created
;
44
45
~ReloadObjects
();
46
void
put
(
OksObject
*
obj
);
47
OksObject
*
pop
(
const
OksClass
* c,
const
std::string&
id
);
48
};
49
50
// the structure to pass common parameters to various read() methods of OksData and OksObject class
51
52
struct
ReadFileParams
53
{
54
OksFile
*
f
;
55
OksXmlInputStream
&
s
;
56
OksAliasTable
*
alias_table
;
57
OksKernel
*
oks_kernel
;
58
char
format
;
59
ReloadObjects
*
reload_objects
;
60
const
char
*
object_tag
;
61
size_t
object_tag_len
;
62
OksObject
*
owner
;
63
std::string
tmp
;
64
65
ReadFileParams
(
OksFile
* f_,
OksXmlInputStream
& s_,
OksAliasTable
* t_,
OksKernel
* k_,
char
m_,
ReloadObjects
* l_)
66
:
f
(f_)
67
,
s
(s_)
68
,
alias_table
(t_)
69
,
oks_kernel
(k_)
70
,
format
(m_)
71
,
reload_objects
(l_)
72
{
73
init
();
74
}
75
76
void
init
();
77
};
78
79
// 17-SEP-2009: for compatibility with previous OKS versions
80
// FIXME: remove later ...
81
82
class
Date
83
{
84
85
public
:
86
Date
(
const
char
* s) {
set
(s); }
// dd/mm/[yy]yy
87
88
virtual
~Date
() { ; }
89
90
void
set
(
const
char
*);
91
92
long
year
()
const
{
return
p_tm
.tm_year; }
93
unsigned
short
month
()
const
{
return
p_tm
.tm_mon; }
94
unsigned
short
day
()
const
{
return
p_tm
.tm_mday; }
95
96
virtual
std::string
str
()
const
;
97
98
protected
:
99
struct
tm
p_tm
;
100
};
101
102
std::ostream&
103
operator<<
(std::ostream&,
const
Date
&);
104
105
class
Time
:
public
Date
106
{
107
108
public
:
109
Time
(
const
char
* s)
110
:
Date
(s)
111
{
/*set(s);*/
112
}
// dd/mm/[yy]yy hh:mm[:ss]
113
114
virtual
~Time
() { ; }
115
116
unsigned
short
hour
()
const
{
return
p_tm
.tm_hour; }
117
unsigned
short
min
()
const
{
return
p_tm
.tm_min; }
118
unsigned
short
sec
()
const
{
return
p_tm
.tm_sec; }
119
120
virtual
std::string
str
()
const
;
121
};
122
123
std::ostream&
124
operator<<
(std::ostream&,
const
Time&);
125
126
}
// namespace oks
127
}
// namespace dunedaq
128
129
#endif
dunedaq::oks::Date
Definition
oks_utils.hpp:83
dunedaq::oks::Date::day
unsigned short day() const
Definition
oks_utils.hpp:94
dunedaq::oks::Date::set
void set(const char *)
Definition
time.cpp:27
dunedaq::oks::Date::p_tm
struct tm p_tm
Definition
oks_utils.hpp:99
dunedaq::oks::Date::~Date
virtual ~Date()
Definition
oks_utils.hpp:88
dunedaq::oks::Date::str
virtual std::string str() const
Definition
time.cpp:137
dunedaq::oks::Date::year
long year() const
Definition
oks_utils.hpp:92
dunedaq::oks::Date::Date
Date(const char *s)
Definition
oks_utils.hpp:86
dunedaq::oks::Date::month
unsigned short month() const
Definition
oks_utils.hpp:93
dunedaq::oks::OksClass
The OKS class.
Definition
class.hpp:223
dunedaq::oks::OksFile
Provides interface to the OKS XML schema and data files.
Definition
file.hpp:355
dunedaq::oks::OksKernel
Provides interface to the OKS kernel.
Definition
kernel.hpp:615
dunedaq::oks::OksObject
OksObject describes instance of OksClass.
Definition
object.hpp:1144
dunedaq::oks::OksXmlInputStream
Definition
xml.hpp:336
dunedaq::oks::Time::str
virtual std::string str() const
Definition
time.cpp:150
dunedaq::oks::Time::Time
Time(const char *s)
Definition
oks_utils.hpp:109
dunedaq::oks::Time::~Time
virtual ~Time()
Definition
oks_utils.hpp:114
dunedaq::oks::Time::sec
unsigned short sec() const
Definition
oks_utils.hpp:118
dunedaq::oks::Time::hour
unsigned short hour() const
Definition
oks_utils.hpp:116
dunedaq::oks::Time::min
unsigned short min() const
Definition
oks_utils.hpp:117
init
void init(unordered_map< std::string, std::string > params)
Definition
conversions-impl.hh:30
exceptions.hpp
dunedaq::oks
Definition
SchemaCommand.hpp:17
dunedaq::oks::str2time
boost::posix_time::ptime str2time(const char *value, size_t len, const char *file_name=nullptr)
dunedaq::oks::operator<<
std::ostream & operator<<(std::ostream &s, const oks::exception &ex)
Definition
exceptions.hpp:40
dunedaq::oks::str2date
boost::gregorian::date str2date(const char *value, size_t len)
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::obj
msgpack::object obj
Definition
Serialization.hpp:252
dunedaq::operator<<
std::ostream & operator<<(std::ostream &s, const ConfigurationChange &c)
Definition
Configuration.cpp:1665
dunedaq::oks::OksAliasTable
The struct OksAliasTable is used to support aliases.
Definition
kernel.hpp:478
dunedaq::oks::ReadFileParams::init
void init()
Definition
object.cpp:345
dunedaq::oks::ReadFileParams::s
OksXmlInputStream & s
Definition
oks_utils.hpp:55
dunedaq::oks::ReadFileParams::ReadFileParams
ReadFileParams(OksFile *f_, OksXmlInputStream &s_, OksAliasTable *t_, OksKernel *k_, char m_, ReloadObjects *l_)
Definition
oks_utils.hpp:65
dunedaq::oks::ReadFileParams::reload_objects
ReloadObjects * reload_objects
Definition
oks_utils.hpp:59
dunedaq::oks::ReadFileParams::alias_table
OksAliasTable * alias_table
Definition
oks_utils.hpp:56
dunedaq::oks::ReadFileParams::object_tag
const char * object_tag
Definition
oks_utils.hpp:60
dunedaq::oks::ReadFileParams::oks_kernel
OksKernel * oks_kernel
Definition
oks_utils.hpp:57
dunedaq::oks::ReadFileParams::format
char format
Definition
oks_utils.hpp:58
dunedaq::oks::ReadFileParams::owner
OksObject * owner
Definition
oks_utils.hpp:62
dunedaq::oks::ReadFileParams::object_tag_len
size_t object_tag_len
Definition
oks_utils.hpp:61
dunedaq::oks::ReadFileParams::tmp
std::string tmp
Definition
oks_utils.hpp:63
dunedaq::oks::ReadFileParams::f
OksFile * f
Definition
oks_utils.hpp:54
dunedaq::oks::ReloadObjects
Definition
oks_utils.hpp:37
dunedaq::oks::ReloadObjects::created
std::vector< OksObject * > created
Definition
oks_utils.hpp:43
dunedaq::oks::ReloadObjects::data
std::map< const OksClass *, map_str_t< OksObject * > * > data
Definition
oks_utils.hpp:42
dunedaq::oks::ReloadObjects::pop
OksObject * pop(const OksClass *c, const std::string &id)
Definition
kernel.cpp:2973
dunedaq::oks::ReloadObjects::map_str_t
std::map< std::string, T > map_str_t
Definition
oks_utils.hpp:40
dunedaq::oks::ReloadObjects::put
void put(OksObject *obj)
Definition
kernel.cpp:2964
Generated on
for DUNE-DAQ by
1.18.0