DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
GenericReceiverModel.hpp
Go to the documentation of this file.
1
8#ifndef ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
9#define ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
10
12
13namespace dunedaq::asiolibs {
14
15template<class TargetPayloadType>
17{
18public:
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<std::pair<const void*, std::size_t>> try_receive(dunedaq::iomanager::Receiver::timeout_t timeout) override {
24 auto opt_payload = m_receiver->try_receive(timeout);
25 if (opt_payload) {
26 m_received = std::move(*opt_payload);
27 return std::make_pair(&m_received, sizeof(TargetPayloadType));
28 }
29 return std::nullopt;
30 }
31
32private:
36 std::shared_ptr<iomanager::ReceiverConcept<TargetPayloadType>> m_receiver;
37
41 TargetPayloadType m_received;
42};
43
44} // namespace dunedaq::asiolibs
45
46#endif // ASIOLIBS_SRC_GENERICRECEIVERMODEL_HPP_
std::optional< std::pair< const void *, std::size_t > > try_receive(dunedaq::iomanager::Receiver::timeout_t timeout) override
GenericReceiverModel(const std::string &raw_data_receiver_connection_name)
std::shared_ptr< iomanager::ReceiverConcept< TargetPayloadType > > m_receiver
Generic IOManager Receiver.
TargetPayloadType m_received
Last received payload.
std::chrono::milliseconds timeout_t
Definition Receiver.hpp:28
static std::shared_ptr< iomanager::ReceiverConcept< Datatype > > get_iom_receiver(iomanager::ConnectionId const &id)