DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::ipm::Receiver Class Referenceabstract

#include <Receiver.hpp>

Inheritance diagram for dunedaq::ipm::Receiver:
[legend]
Collaboration diagram for dunedaq::ipm::Receiver:
[legend]

Classes

struct  ConnectionInfo
struct  Response

Public Types

using duration_t = std::chrono::milliseconds
using message_size_t = int
Public Types inherited from dunedaq::opmonlib::MonitorableObject
using NodePtr = std::weak_ptr<MonitorableObject>
using NewNodePtr = std::shared_ptr<MonitorableObject>
using ElementId = std::string

Public Member Functions

 Receiver ()=default
virtual ~Receiver ()=default
virtual std::string connect_for_receives (const ConnectionInfo &connection_info)=0
virtual bool can_receive () const noexcept=0
Response receive (const duration_t &timeout, message_size_t num_bytes=s_any_size, bool no_tmoexcept_mode=false)
virtual bool data_pending ()=0
virtual void register_callback (std::function< void(Response &)>)=0
virtual void unregister_callback ()=0
 Receiver (const Receiver &)=delete
Receiveroperator= (const Receiver &)=delete
 Receiver (Receiver &&)=delete
Receiveroperator= (Receiver &&)=delete
Public Member Functions inherited from dunedaq::opmonlib::MonitorableObject
 MonitorableObject (const MonitorableObject &)=delete
MonitorableObjectoperator= (const MonitorableObject &)=delete
 MonitorableObject (MonitorableObject &&)=delete
MonitorableObjectoperator= (MonitorableObject &&)=delete
virtual ~MonitorableObject ()=default
auto get_opmon_id () const noexcept
auto get_opmon_level () const noexcept

Static Public Attributes

static constexpr duration_t s_block = duration_t::max()
static constexpr duration_t s_no_block = duration_t::zero()
static constexpr message_size_t s_any_size

Protected Member Functions

void generate_opmon_data () override
virtual Response receive_ (const duration_t &timeout, bool no_tmoexcept_mode)=0
Protected Member Functions inherited from dunedaq::opmonlib::MonitorableObject
 MonitorableObject ()=default
void register_node (ElementId name, NewNodePtr)
void publish (google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept

Protected Attributes

ConnectionInfo m_connection_info

Private Attributes

std::atomic< size_t > m_bytes = { 0 }
std::atomic< size_t > m_messages = { 0 }

Additional Inherited Members

Static Public Member Functions inherited from dunedaq::opmonlib::MonitorableObject
static bool publishable_metric (OpMonLevel entry, OpMonLevel system) noexcept

Detailed Description

Definition at line 73 of file Receiver.hpp.

Member Typedef Documentation

◆ duration_t

using dunedaq::ipm::Receiver::duration_t = std::chrono::milliseconds

Definition at line 83 of file Receiver.hpp.

◆ message_size_t

Definition at line 87 of file Receiver.hpp.

Constructor & Destructor Documentation

◆ Receiver() [1/3]

dunedaq::ipm::Receiver::Receiver ( )
default

◆ ~Receiver()

virtual dunedaq::ipm::Receiver::~Receiver ( )
virtualdefault

◆ Receiver() [2/3]

dunedaq::ipm::Receiver::Receiver ( const Receiver & )
delete

◆ Receiver() [3/3]

dunedaq::ipm::Receiver::Receiver ( Receiver && )
delete

Member Function Documentation

◆ can_receive()

virtual bool dunedaq::ipm::Receiver::can_receive ( ) const
pure virtualnoexcept

◆ connect_for_receives()

virtual std::string dunedaq::ipm::Receiver::connect_for_receives ( const ConnectionInfo & connection_info)
pure virtual

◆ data_pending()

virtual bool dunedaq::ipm::Receiver::data_pending ( )
pure virtual

◆ generate_opmon_data()

void dunedaq::ipm::Receiver::generate_opmon_data ( )
overrideprotectedvirtual

Hook for customisable pubblication. The function can throw, exception will be caught by the monitoring thread

Reimplemented from dunedaq::opmonlib::MonitorableObject.

Definition at line 39 of file Receiver.cpp.

40{
41
42 opmon::ReceiverInfo i;
43
44 i.set_bytes(m_bytes.exchange(0));
45 i.set_messages(m_messages.exchange(0));
46
47 publish(std::move(i));
48}
std::atomic< size_t > m_bytes
Definition Receiver.hpp:128
std::atomic< size_t > m_messages
Definition Receiver.hpp:129
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept

◆ operator=() [1/2]

Receiver & dunedaq::ipm::Receiver::operator= ( const Receiver & )
delete

◆ operator=() [2/2]

Receiver & dunedaq::ipm::Receiver::operator= ( Receiver && )
delete

◆ receive()

dunedaq::ipm::Receiver::Response dunedaq::ipm::Receiver::receive ( const duration_t & timeout,
message_size_t num_bytes = s_any_size,
bool no_tmoexcept_mode = false )

Definition at line 15 of file Receiver.cpp.

16{
17 if (!can_receive()) {
18 throw KnownStateForbidsReceive(ERS_HERE);
19 }
20 auto message = receive_(timeout, no_tmoexcept_mode);
21
22 if (bytes != s_any_size) {
23 auto received_size = static_cast<message_size_t>(message.data.size());
24 if (received_size != bytes) {
25 throw UnexpectedNumberOfBytes(ERS_HERE, m_connection_info.connection_name, received_size, bytes);
26 }
27 }
28
29 // 18-May-2026, KAB: only increment the opmon counters if a non-empty message was received
30 if (message.data.size() > 0) {
31 m_bytes += message.data.size();
32 ++m_messages;
33 }
34
35 return message;
36}
#define ERS_HERE
ConnectionInfo m_connection_info
Definition Receiver.hpp:122
static constexpr message_size_t s_any_size
Definition Receiver.hpp:88
virtual Response receive_(const duration_t &timeout, bool no_tmoexcept_mode)=0
virtual bool can_receive() const noexcept=0
Only Configuration DB opened by rdbconfig or oksconflibs plug in can be message

◆ receive_()

virtual Response dunedaq::ipm::Receiver::receive_ ( const duration_t & timeout,
bool no_tmoexcept_mode )
protectedpure virtual

◆ register_callback()

virtual void dunedaq::ipm::Receiver::register_callback ( std::function< void(Response &)> )
pure virtual

◆ unregister_callback()

virtual void dunedaq::ipm::Receiver::unregister_callback ( )
pure virtual

Member Data Documentation

◆ m_bytes

std::atomic<size_t> dunedaq::ipm::Receiver::m_bytes = { 0 }
mutableprivate

Definition at line 128 of file Receiver.hpp.

128{ 0 };

◆ m_connection_info

ConnectionInfo dunedaq::ipm::Receiver::m_connection_info
protected

Definition at line 122 of file Receiver.hpp.

◆ m_messages

std::atomic<size_t> dunedaq::ipm::Receiver::m_messages = { 0 }
mutableprivate

Definition at line 129 of file Receiver.hpp.

129{ 0 };

◆ s_any_size

message_size_t dunedaq::ipm::Receiver::s_any_size
staticconstexpr
Initial value:
=
0

Definition at line 88 of file Receiver.hpp.

◆ s_block

duration_t dunedaq::ipm::Receiver::s_block = duration_t::max()
staticconstexpr

Definition at line 84 of file Receiver.hpp.

◆ s_no_block

duration_t dunedaq::ipm::Receiver::s_no_block = duration_t::zero()
staticconstexpr

Definition at line 85 of file Receiver.hpp.


The documentation for this class was generated from the following files: