DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
Receiver.hpp
Go to the documentation of this file.
1
9#ifndef IOMANAGER_INCLUDE_IOMANAGER_RECEIVER_HPP_
10#define IOMANAGER_INCLUDE_IOMANAGER_RECEIVER_HPP_
11
14
15#include "logging/Logging.hpp"
17
18#include <optional>
19#include <string>
20
21namespace dunedaq::iomanager {
22
23// Typeless
25{
26public:
27 using timeout_t = std::chrono::milliseconds;
28 static constexpr timeout_t s_block = timeout_t::max();
29 static constexpr timeout_t s_no_block = timeout_t::zero();
30
31 explicit Receiver(ConnectionId const& this_conn)
32 : utilities::NamedObject(this_conn.uid)
33 , m_conn(this_conn)
34 {
35 }
36
37 virtual ~Receiver() = default;
38
39 ConnectionId id() const { return m_conn; }
40
41protected:
43};
44
45// Interface
46template<typename Datatype>
48{
49public:
50 explicit ReceiverConcept(ConnectionId const& conn_id)
51 : Receiver(conn_id)
52 {
53 }
54 virtual Datatype receive(Receiver::timeout_t timeout) = 0;
55 virtual std::optional<Datatype> try_receive(Receiver::timeout_t timeout) = 0;
56 virtual void add_callback(std::function<void(Datatype&)> callback) = 0;
57 virtual void remove_callback() = 0;
58 virtual void subscribe(std::string topic) = 0;
59 virtual void unsubscribe(std::string topic) = 0;
60};
61
62} // namespace dunedaq::iomanager
63
64#endif // IOMANAGER_INCLUDE_IOMANAGER_RECEIVER_HPP_
ReceiverConcept(ConnectionId const &conn_id)
Definition Receiver.hpp:50
virtual Datatype receive(Receiver::timeout_t timeout)=0
virtual void add_callback(std::function< void(Datatype &)> callback)=0
virtual std::optional< Datatype > try_receive(Receiver::timeout_t timeout)=0
virtual void subscribe(std::string topic)=0
virtual void unsubscribe(std::string topic)=0
Receiver(ConnectionId const &this_conn)
Definition Receiver.hpp:31
static constexpr timeout_t s_block
Definition Receiver.hpp:28
std::chrono::milliseconds timeout_t
Definition Receiver.hpp:27
static constexpr timeout_t s_no_block
Definition Receiver.hpp:29
ConnectionId id() const
Definition Receiver.hpp:39
virtual ~Receiver()=default
Implements the Named interface.
NamedObject(const std::string &name)
NamedObject Constructor.