DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq
sourcecode
asiolibs
src
GenericReceiverModel.hpp
Go to the documentation of this file.
1
8
#ifndef ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
9
#define ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
10
11
#include "
GenericReceiverConcept.hpp
"
12
13
namespace
dunedaq::asiolibs
{
14
15
template
<
class
TargetPayloadType>
16
class
GenericReceiverModel
:
public
GenericReceiverConcept
17
{
18
public
:
19
explicit
GenericReceiverModel
(
const
std::string& raw_data_receiver_connection_name)
20
:
m_receiver
(
get_iom_receiver
<TargetPayloadType>(raw_data_receiver_connection_name))
21
{}
22
23
std::optional<TypeErasedPayload>
try_receive
(
dunedaq::iomanager::Receiver::timeout_t
timeout)
override
{
24
auto
opt_payload =
m_receiver
->try_receive(timeout);
25
if
(opt_payload) {
26
// Allocate the received payload on the heap with shared ownership,
27
// so its lifetime can outlive this function and be tied to async sends.
28
auto
payload = std::make_shared<TargetPayloadType>(std::move(*opt_payload));
29
return
TypeErasedPayload
{ std::reinterpret_pointer_cast<const void>(payload), payload.get(),
sizeof
(*payload) };
30
}
31
return
std::nullopt;
32
}
33
34
private
:
38
std::shared_ptr<iomanager::ReceiverConcept<TargetPayloadType>>
m_receiver
;
39
};
40
41
}
// namespace dunedaq::asiolibs
42
43
#endif
// ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
GenericReceiverConcept.hpp
dunedaq::asiolibs::GenericReceiverConcept
Definition
GenericReceiverConcept.hpp:16
dunedaq::asiolibs::GenericReceiverModel
Definition
GenericReceiverModel.hpp:17
dunedaq::asiolibs::GenericReceiverModel::GenericReceiverModel
GenericReceiverModel(const std::string &raw_data_receiver_connection_name)
Definition
GenericReceiverModel.hpp:19
dunedaq::asiolibs::GenericReceiverModel::m_receiver
std::shared_ptr< iomanager::ReceiverConcept< TargetPayloadType > > m_receiver
Generic IOManager Receiver.
Definition
GenericReceiverModel.hpp:38
dunedaq::asiolibs::GenericReceiverModel::try_receive
std::optional< TypeErasedPayload > try_receive(dunedaq::iomanager::Receiver::timeout_t timeout) override
Definition
GenericReceiverModel.hpp:23
dunedaq::iomanager::Receiver::timeout_t
std::chrono::milliseconds timeout_t
Definition
Receiver.hpp:27
dunedaq::asiolibs
Definition
CreateGenericReceiver.hpp:24
dunedaq::get_iom_receiver
static std::shared_ptr< iomanager::ReceiverConcept< Datatype > > get_iom_receiver(iomanager::ConnectionId const &id)
Definition
IOManager.hxx:178
dunedaq::asiolibs::GenericReceiverConcept::TypeErasedPayload
Definition
GenericReceiverConcept.hpp:18
Generated on Sat Aug 23 2025 for DUNE-DAQ by
1.12.0