DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
iomanager
include
iomanager
network
NetworkSenderModel.hpp
Go to the documentation of this file.
1
8
9
#ifndef IOMANAGER_INCLUDE_IOMANAGER_NETWORK_NETWORKSENDERMODEL_HPP_
10
#define IOMANAGER_INCLUDE_IOMANAGER_NETWORK_NETWORKSENDERMODEL_HPP_
11
12
#include "
iomanager/Sender.hpp
"
13
14
#include "
ipm/Sender.hpp
"
15
#include "
serialization/Serialization.hpp
"
16
17
#include <memory>
18
#include <string>
19
#include <utility>
20
21
namespace
dunedaq::iomanager
{
22
23
// NImpl
24
template
<
typename
Datatype>
25
class
NetworkSenderModel
:
public
SenderConcept
<Datatype>
26
{
27
public
:
28
using
SenderConcept
<Datatype>
::send
;
29
30
explicit
NetworkSenderModel
(
ConnectionId
const
& conn_id);
31
32
NetworkSenderModel
(
NetworkSenderModel
&& other);
33
34
void
send
(Datatype&& data,
Sender::timeout_t
timeout)
override
;
35
36
bool
try_send
(Datatype&& data,
Sender::timeout_t
timeout)
override
;
37
38
void
send_with_topic
(Datatype&& data,
Sender::timeout_t
timeout, std::string topic)
override
;
39
40
bool
is_ready_for_sending
(
Sender::timeout_t
timeout)
override
;
41
42
private
:
43
void
get_sender
(
Sender::timeout_t
const
& timeout);
44
45
template
<
typename
MessageType>
46
typename
std::enable_if<serialization::is_serializable<MessageType>::value,
void
>::type
write_network
(
47
MessageType& message,
48
Sender::timeout_t
const
& timeout);
49
50
template
<
typename
MessageType>
51
typename
std::enable_if<!serialization::is_serializable<MessageType>::value,
void
>::type
write_network
(
52
MessageType&,
53
Sender::timeout_t
const
&);
54
55
template
<
typename
MessageType>
56
typename
std::enable_if<serialization::is_serializable<MessageType>::value,
bool
>::type
try_write_network
(
57
MessageType& message,
58
Sender::timeout_t
const
& timeout);
59
60
template
<
typename
MessageType>
61
typename
std::enable_if<!serialization::is_serializable<MessageType>::value,
bool
>::type
try_write_network
(
62
MessageType&,
63
Sender::timeout_t
const
&);
64
65
template
<
typename
MessageType>
66
typename
std::enable_if<serialization::is_serializable<MessageType>::value,
void
>::type
67
write_network_with_topic
(MessageType& message,
Sender::timeout_t
const
& timeout, std::string topic);
68
69
template
<
typename
MessageType>
70
typename
std::enable_if<!serialization::is_serializable<MessageType>::value,
void
>::type
71
write_network_with_topic
(MessageType&,
Sender::timeout_t
const
&, std::string);
72
73
Sender::timeout_t
extend_first_timeout
(
Sender::timeout_t
timeout);
74
75
std::shared_ptr<ipm::Sender>
m_network_sender_ptr
;
76
std::mutex
m_send_mutex
;
77
std::string
m_topic
{
""
};
78
std::atomic<bool>
m_first
{
true
};
79
};
80
81
}
// namespace dunedaq::iomanager
82
83
#include "
detail/NetworkSenderModel.hxx
"
84
85
#endif
// IOMANAGER_INCLUDE_IOMANAGER_NETWORK_NETWORKSENDERMODEL_HPP_
NetworkSenderModel.hxx
Serialization.hpp
dunedaq::iomanager::NetworkSenderModel::get_sender
void get_sender(Sender::timeout_t const &timeout)
Definition
NetworkSenderModel.hxx:78
dunedaq::iomanager::NetworkSenderModel::write_network
std::enable_if< serialization::is_serializable< MessageType >::value, void >::type write_network(MessageType &message, Sender::timeout_t const &timeout)
Definition
NetworkSenderModel.hxx:101
dunedaq::iomanager::NetworkSenderModel::try_send
bool try_send(Datatype &&data, Sender::timeout_t timeout) override
Definition
NetworkSenderModel.hxx:52
dunedaq::iomanager::NetworkSenderModel::send
void send(Datatype &&data, Sender::timeout_t timeout) override
Definition
NetworkSenderModel.hxx:41
dunedaq::iomanager::NetworkSenderModel::write_network_with_topic
std::enable_if<!serialization::is_serializable< MessageType >::value, void >::type write_network_with_topic(MessageType &, Sender::timeout_t const &, std::string)
dunedaq::iomanager::NetworkSenderModel::m_send_mutex
std::mutex m_send_mutex
Definition
NetworkSenderModel.hpp:76
dunedaq::iomanager::NetworkSenderModel::write_network
std::enable_if<!serialization::is_serializable< MessageType >::value, void >::type write_network(MessageType &, Sender::timeout_t const &)
dunedaq::iomanager::NetworkSenderModel::NetworkSenderModel
NetworkSenderModel(ConnectionId const &conn_id)
Definition
NetworkSenderModel.hxx:19
dunedaq::iomanager::NetworkSenderModel::try_write_network
std::enable_if<!serialization::is_serializable< MessageType >::value, bool >::type try_write_network(MessageType &, Sender::timeout_t const &)
dunedaq::iomanager::NetworkSenderModel::m_topic
std::string m_topic
Definition
NetworkSenderModel.hpp:77
dunedaq::iomanager::NetworkSenderModel::m_first
std::atomic< bool > m_first
Definition
NetworkSenderModel.hpp:78
dunedaq::iomanager::NetworkSenderModel::m_network_sender_ptr
std::shared_ptr< ipm::Sender > m_network_sender_ptr
Definition
NetworkSenderModel.hpp:75
dunedaq::iomanager::NetworkSenderModel::is_ready_for_sending
bool is_ready_for_sending(Sender::timeout_t timeout) override
Definition
NetworkSenderModel.hxx:70
dunedaq::iomanager::NetworkSenderModel::write_network_with_topic
std::enable_if< serialization::is_serializable< MessageType >::value, void >::type write_network_with_topic(MessageType &message, Sender::timeout_t const &timeout, std::string topic)
Definition
NetworkSenderModel.hxx:172
dunedaq::iomanager::NetworkSenderModel::send_with_topic
void send_with_topic(Datatype &&data, Sender::timeout_t timeout, std::string topic) override
Definition
NetworkSenderModel.hxx:59
dunedaq::iomanager::NetworkSenderModel::try_write_network
std::enable_if< serialization::is_serializable< MessageType >::value, bool >::type try_write_network(MessageType &message, Sender::timeout_t const &timeout)
Definition
NetworkSenderModel.hxx:136
dunedaq::iomanager::NetworkSenderModel::extend_first_timeout
Sender::timeout_t extend_first_timeout(Sender::timeout_t timeout)
Definition
NetworkSenderModel.hxx:206
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
Sender.hpp
Sender.hpp
dunedaq::iomanager
Definition
IOManager.hxx:19
dunedaq::iomanager::ConnectionId
Definition
SchemaUtils.hpp:26
Generated on
for DUNE-DAQ by
1.17.0