DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
iomanager
include
iomanager
queue
detail
QueueSenderModel.hxx
Go to the documentation of this file.
1
2
#include "
iomanager/Sender.hpp
"
3
#include "
iomanager/queue/QueueIssues.hpp
"
4
#include "
iomanager/queue/QueueRegistry.hpp
"
5
6
#include "
logging/Logging.hpp
"
7
8
#include <memory>
9
#include <string>
10
#include <typeinfo>
11
#include <utility>
12
13
namespace
dunedaq::iomanager
{
14
15
template
<
typename
Datatype>
16
inline
void
17
QueueSenderModel<Datatype>::send_with_topic
(Datatype&& data,
Sender::timeout_t
timeout, std::string)
// NOLINT
18
{
19
// Topics are not used for Queues
20
send
(std::move(data), timeout);
21
}
22
23
template
<
typename
Datatype>
24
inline
bool
25
QueueSenderModel<Datatype>::try_send
(Datatype&& data,
Sender::timeout_t
timeout)
// NOLINT
26
{
27
if
(
m_queue
==
nullptr
) {
28
ers::error
(ConnectionInstanceNotFound(
ERS_HERE
, this->
id
().uid));
29
return
false
;
30
}
31
32
return
m_queue
->try_push(std::move(data), timeout);
33
}
34
35
template
<
typename
Datatype>
36
inline
void
37
QueueSenderModel<Datatype>::send
(Datatype&& data,
Sender::timeout_t
timeout)
// NOLINT
38
{
39
if
(
m_queue
==
nullptr
)
40
throw
ConnectionInstanceNotFound(
ERS_HERE
, this->
id
().uid);
41
42
try
{
43
m_queue
->push(std::move(data), timeout);
44
}
catch
(QueueTimeoutExpired& ex) {
45
throw
TimeoutExpired
(
ERS_HERE
, this->
id
().uid,
"push"
, timeout.count(), ex);
46
}
47
}
48
49
template
<
typename
Datatype>
50
inline
bool
51
QueueSenderModel<Datatype>::is_ready_for_sending
(
Sender::timeout_t
/*timeout*/
)
// NOLINT
52
{
53
// Queues are always ready
54
return
true
;
55
}
56
57
template
<
typename
Datatype>
58
inline
QueueSenderModel<Datatype>::QueueSenderModel
(
QueueSenderModel
&& other)
59
:
SenderConcept
<Datatype>(other.
m_conn
.uid)
60
,
m_queue
(
std
::move(other.
m_queue
))
61
{
62
}
63
64
template
<
typename
Datatype>
65
inline
QueueSenderModel<Datatype>::QueueSenderModel
(
ConnectionId
const
& request)
66
:
SenderConcept
<Datatype>(request)
67
{
68
TLOG
() <<
"QueueSenderModel created with DT! Addr: "
<<
static_cast<
void
*
>
(
this
);
69
m_queue
=
QueueRegistry::get
().
get_queue
<Datatype>(request.
uid
);
70
TLOG
() <<
"QueueSenderModel m_queue="
<<
static_cast<
void
*
>
(
m_queue
.get());
71
// get queue ref from queueregistry based on conn_id
72
}
73
74
}
// namespace dunedaq::iomanager
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:141
QueueIssues.hpp
QueueRegistry.hpp
dunedaq::iomanager::QueueRegistry::get
static QueueRegistry & get()
Get a handle to the QueueRegistry.
Definition
QueueRegistry.cpp:24
dunedaq::iomanager::QueueRegistry::get_queue
std::shared_ptr< Queue< T > > get_queue(const std::string &name)
Get a handle to a Queue.
Definition
QueueRegistry.hxx:12
dunedaq::iomanager::QueueSenderModel::try_send
bool try_send(Datatype &&data, Sender::timeout_t timeout) override
Definition
QueueSenderModel.hxx:25
dunedaq::iomanager::QueueSenderModel::is_ready_for_sending
bool is_ready_for_sending(Sender::timeout_t timeout) override
Definition
QueueSenderModel.hxx:51
dunedaq::iomanager::QueueSenderModel::m_queue
std::shared_ptr< Queue< Datatype > > m_queue
Definition
QueueSenderModel.hpp:37
dunedaq::iomanager::QueueSenderModel::send_with_topic
void send_with_topic(Datatype &&data, Sender::timeout_t timeout, std::string) override
Definition
QueueSenderModel.hxx:17
dunedaq::iomanager::QueueSenderModel::QueueSenderModel
QueueSenderModel(ConnectionId const &request)
Definition
QueueSenderModel.hxx:65
dunedaq::iomanager::QueueSenderModel::send
void send(Datatype &&data, Sender::timeout_t timeout) override
Definition
QueueSenderModel.hxx:37
dunedaq::iomanager::SenderConcept::SenderConcept
SenderConcept(ConnectionId const &conn_id)
Definition
Sender.hpp:46
dunedaq::iomanager::Sender::timeout_t
std::chrono::milliseconds timeout_t
Definition
Sender.hpp:24
dunedaq::iomanager::Sender::m_conn
ConnectionId m_conn
Definition
Sender.hpp:38
Sender.hpp
Logging.hpp
TLOG
#define TLOG(...)
Definition
macro.hpp:22
dunedaq::iomanager
Definition
IOManager.hxx:19
dunedaq::TimeoutExpired
TimeoutExpired
Definition
CommonIssues.hpp:26
ers::error
void error(const Issue &issue)
Definition
ers.hpp:92
std
Definition
SchemaUtils.hpp:118
dunedaq::iomanager::ConnectionId
Definition
SchemaUtils.hpp:26
dunedaq::iomanager::ConnectionId::uid
std::string uid
Definition
SchemaUtils.hpp:27
Generated on
for DUNE-DAQ by
1.17.0