DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
datahandlinglibs
include
datahandlinglibs
models
detail
SkipListLatencyBufferModel.hxx
Go to the documentation of this file.
1
// Declarations for SkipListLatencyBufferModel
2
3
#include "
datahandlinglibs/opmon/datahandling_info.pb.h
"
4
5
namespace
dunedaq
{
6
namespace
datahandlinglibs
{
7
8
template
<
class
T>
9
size_t
10
SkipListLatencyBufferModel<T>::occupancy
()
const
11
{
12
auto
occupancy
= 0;
13
{
14
SkipListTAcc
acc(
m_skip_list
);
15
occupancy
= acc.size();
16
}
17
return
occupancy
;
18
}
19
20
template
<
class
T>
21
bool
22
SkipListLatencyBufferModel<T>::write
(T&& new_element)
23
{
24
bool
success =
false
;
25
{
26
SkipListTAcc
acc(
m_skip_list
);
27
auto
ret = acc.insert(std::move(new_element));
// ret T = std::pair<iterator, bool>
28
success = ret.second;
29
}
30
return
success;
31
}
32
33
template
<
class
T>
34
std::pair<const T*, bool>
35
SkipListLatencyBufferModel<T>::write_and_return
(T&& new_element)
36
{
37
const
T* written =
nullptr
;
38
bool
success =
false
;
39
{
40
SkipListTAcc
acc(
m_skip_list
);
41
const
auto
[iter, result] = acc.insert(std::move(new_element));
42
written = &(*iter);
43
success = result;
44
}
45
return
{written, success};
46
}
47
48
template
<
class
T>
49
bool
50
SkipListLatencyBufferModel<T>::put
(T& new_element)
51
{
52
bool
success =
false
;
53
{
54
SkipListTAcc
acc(
m_skip_list
);
55
auto
ret = acc.insert(new_element);
// ret T = std::pair<iterator, bool>
56
success = ret.second;
57
}
58
return
success;
59
}
60
61
template
<
class
T>
62
bool
63
SkipListLatencyBufferModel<T>::read
(T& element)
64
{
65
bool
found =
false
;
66
{
67
SkipListTAcc
acc(
m_skip_list
);
68
auto
lb_node = acc.begin();
69
found = (lb_node == acc.end()) ? false :
true
;
70
if
(found) {
71
element = *lb_node;
72
}
73
}
74
return
found;
75
}
76
77
template
<
class
T>
78
typename
SkipListLatencyBufferModel<T>::Iterator
79
SkipListLatencyBufferModel<T>::begin
()
80
{
81
SkipListTAcc
acc =
SkipListTAcc
(
m_skip_list
);
82
SkipListTIter
iter = acc.begin();
83
return
std::move(
SkipListLatencyBufferModel<T>::Iterator
(std::move(acc), iter));
84
}
85
86
template
<
class
T>
87
typename
SkipListLatencyBufferModel<T>::Iterator
88
SkipListLatencyBufferModel<T>::end
()
89
{
90
SkipListTAcc
acc =
SkipListTAcc
(
m_skip_list
);
91
SkipListTIter
iter = acc.end();
92
return
std::move(
SkipListLatencyBufferModel<T>::Iterator
(std::move(acc), iter));
93
}
94
95
template
<
class
T>
96
typename
SkipListLatencyBufferModel<T>::Iterator
97
SkipListLatencyBufferModel<T>::lower_bound
(T& element,
bool
/*with_errors=false*/
)
98
{
99
SkipListTAcc
acc =
SkipListTAcc
(
m_skip_list
);
100
SkipListTIter
iter = acc.lower_bound(element);
101
return
std::move(
SkipListLatencyBufferModel<T>::Iterator
(std::move(acc), iter));
102
}
103
104
template
<
class
T>
105
const
T*
106
SkipListLatencyBufferModel<T>::front
()
107
{
108
SkipListTAcc
acc(
m_skip_list
);
109
return
acc.first();
110
}
111
112
template
<
class
T>
113
const
T*
114
SkipListLatencyBufferModel<T>::back
()
115
{
116
SkipListTAcc
acc(
m_skip_list
);
117
return
acc.last();
118
}
119
120
template
<
class
T>
121
void
122
SkipListLatencyBufferModel<T>::pop
(
size_t
num)
// NOLINT(build/unsigned)
123
{
124
{
125
SkipListTAcc
acc(
m_skip_list
);
126
for
(
unsigned
i = 0; i < num; ++i) {
127
acc.pop_back();
128
}
129
}
130
}
131
132
template
<
class
T>
133
void
134
SkipListLatencyBufferModel<T>::generate_opmon_data
() {
135
opmon::LatencyBufferInfo
info;
136
info.set_num_buffer_elements(
occupancy
());
137
this->
publish
(std::move(info));
138
}
139
140
}
// namespace datahandlinglibs
141
}
// namespace dunedaq
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::occupancy
size_t occupancy() const override
Occupancy of LB.
Definition
SkipListLatencyBufferModel.hxx:10
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::begin
Iterator begin()
Definition
SkipListLatencyBufferModel.hxx:79
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::m_skip_list
std::shared_ptr< SkipListT > m_skip_list
Definition
SkipListLatencyBufferModel.hpp:126
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::lower_bound
Iterator lower_bound(T &element, bool with_errors=false)
Definition
SkipListLatencyBufferModel.hxx:97
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::SkipListTAcc
typename folly::ConcurrentSkipList< T >::Accessor SkipListTAcc
Definition
SkipListLatencyBufferModel.hpp:35
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::write_and_return
std::pair< const T *, bool > write_and_return(T &&new_element)
Definition
SkipListLatencyBufferModel.hxx:35
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::read
bool read(T &element) override
Move object from LB to referenced.
Definition
SkipListLatencyBufferModel.hxx:63
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::SkipListTIter
typename SkipListT::iterator SkipListTIter
Definition
SkipListLatencyBufferModel.hpp:34
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::generate_opmon_data
virtual void generate_opmon_data() override
Definition
SkipListLatencyBufferModel.hxx:134
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::write
bool write(T &&new_element) override
Move referenced object into LB.
Definition
SkipListLatencyBufferModel.hxx:22
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::back
const T * back() override
Get pointer to the back of the LB.
Definition
SkipListLatencyBufferModel.hxx:114
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::put
bool put(T &new_element)
Definition
SkipListLatencyBufferModel.hxx:50
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::pop
void pop(size_t num=1) override
Definition
SkipListLatencyBufferModel.hxx:122
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::front
const T * front() override
Get pointer to the front of the LB.
Definition
SkipListLatencyBufferModel.hxx:106
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::end
Iterator end()
Definition
SkipListLatencyBufferModel.hxx:88
dunedaq::datahandlinglibs::opmon::LatencyBufferInfo
Definition
datahandling_info.pb.h:110
dunedaq::opmonlib::MonitorableObject::publish
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept
Definition
MonitorableObject.cpp:58
datahandling_info.pb.h
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::datahandlinglibs::SkipListLatencyBufferModel::Iterator
Definition
SkipListLatencyBufferModel.hpp:49
Generated on
for DUNE-DAQ by
1.17.0