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  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 nlohmann::json &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 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
 

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 71 of file Receiver.hpp.

Member Typedef Documentation

◆ duration_t

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

Definition at line 75 of file Receiver.hpp.

◆ message_size_t

Definition at line 79 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 nlohmann::json & connection_info)
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 34 of file Receiver.cpp.

35{
36
37 opmon::ReceiverInfo i;
38
39 i.set_bytes(m_bytes.exchange(0));
40 i.set_messages(m_messages.exchange(0));
41
42 publish(std::move(i));
43}
std::atomic< size_t > m_bytes
Definition Receiver.hpp:119
std::atomic< size_t > m_messages
Definition Receiver.hpp:120
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 13 of file Receiver.cpp.

14{
15 if (!can_receive()) {
16 throw KnownStateForbidsReceive(ERS_HERE);
17 }
18 auto message = receive_(timeout, no_tmoexcept_mode);
19
20 if (bytes != s_any_size) {
21 auto received_size = static_cast<message_size_t>(message.data.size());
22 if (received_size != bytes) {
23 throw UnexpectedNumberOfBytes(ERS_HERE, received_size, bytes);
24 }
25 }
26
27 m_bytes += message.data.size();
28 ++m_messages;
29
30 return message;
31}
#define ERS_HERE
static constexpr message_size_t s_any_size
Definition Receiver.hpp:80
virtual Response receive_(const duration_t &timeout, bool no_tmoexcept_mode)=0
virtual bool can_receive() const noexcept=0
Unknown serialization Cannot deserialize 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 119 of file Receiver.hpp.

119{ 0 };

◆ m_messages

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

Definition at line 120 of file Receiver.hpp.

120{ 0 };

◆ s_any_size

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

Definition at line 80 of file Receiver.hpp.

◆ s_block

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

Definition at line 76 of file Receiver.hpp.

◆ s_no_block

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

Definition at line 77 of file Receiver.hpp.


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