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
20namespace dunedaq {
21
22namespace iomanager {
23
24// Typeless
26{
27public:
28 using timeout_t = std::chrono::milliseconds;
29 static constexpr timeout_t s_block = timeout_t::max();
30 static constexpr timeout_t s_no_block = timeout_t::zero();
31
32 explicit Receiver(ConnectionId const& this_conn)
33 : utilities::NamedObject(this_conn.uid)
34 , m_conn(this_conn)
35 {
36 }
37
38 virtual ~Receiver() = default;
39
40 ConnectionId id() const { return m_conn; }
41
42protected:
44};
45
46// Interface
47template<typename Datatype>
49{
50public:
51 explicit ReceiverConcept(ConnectionId const& conn_id)
52 : Receiver(conn_id)
53 {
54 }
55 virtual Datatype receive(Receiver::timeout_t timeout) = 0;
56 virtual std::optional<Datatype> try_receive(Receiver::timeout_t timeout) = 0;
57 virtual void add_callback(std::function<void(Datatype&)> callback) = 0;
58 virtual void remove_callback() = 0;
59 virtual void subscribe(std::string topic) = 0;
60 virtual void unsubscribe(std::string topic) = 0;
61};
62
63} // namespace iomanager
64} // namespace dunedaq
65
66#endif // IOMANAGER_INCLUDE_IOMANAGER_RECEIVER_HPP_
ReceiverConcept(ConnectionId const &conn_id)
Definition Receiver.hpp:51
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:32
static constexpr timeout_t s_block
Definition Receiver.hpp:29
std::chrono::milliseconds timeout_t
Definition Receiver.hpp:28
static constexpr timeout_t s_no_block
Definition Receiver.hpp:30
ConnectionId id() const
Definition Receiver.hpp:40
virtual ~Receiver()=default
Implements the Named interface.
NamedObject(const std::string &name)
NamedObject Constructor.
Including Qt Headers.