DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
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
#include <string>
14
#include <utility>
15
#include <memory>
16
17
namespace
dunedaq::asiolibs
{
18
19
template
<
class
TargetPayloadType>
20
class
GenericReceiverModel
:
public
GenericReceiverConcept
21
{
22
public
:
23
explicit
GenericReceiverModel
(
const
std::string& receiver_connection_name)
24
:
m_receiver
(
get_iom_receiver
<TargetPayloadType>(receiver_connection_name))
25
{}
26
27
std::optional<TypeErasedPayload>
try_receive
(
dunedaq::iomanager::Receiver::timeout_t
timeout)
override
{
28
auto
opt_payload =
m_receiver
->try_receive(timeout);
29
if
(opt_payload) {
30
// Allocate the received payload on the heap with shared ownership,
31
// so its lifetime can outlive this function and be tied to async sends.
32
auto
payload = std::make_shared<TargetPayloadType>(std::move(*opt_payload));
33
return
TypeErasedPayload
{ std::reinterpret_pointer_cast<const void>(payload), payload.get(),
sizeof
(*payload) };
34
}
35
return
std::nullopt;
36
}
37
38
private
:
42
std::shared_ptr<iomanager::ReceiverConcept<TargetPayloadType>>
m_receiver
;
43
};
44
45
}
// namespace dunedaq::asiolibs
46
47
#endif
// ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
GenericReceiverConcept.hpp
dunedaq::asiolibs::GenericReceiverConcept
Definition
GenericReceiverConcept.hpp:18
dunedaq::asiolibs::GenericReceiverModel::GenericReceiverModel
GenericReceiverModel(const std::string &receiver_connection_name)
Definition
GenericReceiverModel.hpp:23
dunedaq::asiolibs::GenericReceiverModel::m_receiver
std::shared_ptr< iomanager::ReceiverConcept< TargetPayloadType > > m_receiver
Generic IOManager Receiver.
Definition
GenericReceiverModel.hpp:42
dunedaq::asiolibs::GenericReceiverModel::try_receive
std::optional< TypeErasedPayload > try_receive(dunedaq::iomanager::Receiver::timeout_t timeout) override
Definition
GenericReceiverModel.hpp:27
dunedaq::iomanager::Receiver::timeout_t
std::chrono::milliseconds timeout_t
Definition
Receiver.hpp:27
dunedaq::asiolibs
Definition
CreateGenericReceiver.hpp:25
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:20
Generated on
for DUNE-DAQ by
1.17.0