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

#include <Sender.hpp>

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

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

 Sender ()=default
 
virtual ~Sender ()=default
 
virtual std::string connect_for_sends (const nlohmann::json &connection_info)=0
 
virtual bool can_send () const noexcept=0
 
bool send (const void *message, message_size_t message_size, const duration_t &timeout, std::string const &metadata="", bool no_tmoexcept_mode=false)
 
 Sender (const Sender &)=delete
 
Senderoperator= (const Sender &)=delete
 
 Sender (Sender &&)=delete
 
Senderoperator= (Sender &&)=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()
 

Protected Member Functions

void generate_opmon_data () override
 
virtual bool send_ (const void *message, message_size_t N, const duration_t &timeout, std::string const &metadata, 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 69 of file Sender.hpp.

Member Typedef Documentation

◆ duration_t

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

Definition at line 73 of file Sender.hpp.

◆ message_size_t

Definition at line 77 of file Sender.hpp.

Constructor & Destructor Documentation

◆ Sender() [1/3]

dunedaq::ipm::Sender::Sender ( )
default

◆ ~Sender()

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

◆ Sender() [2/3]

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

◆ Sender() [3/3]

dunedaq::ipm::Sender::Sender ( Sender && )
delete

Member Function Documentation

◆ can_send()

virtual bool dunedaq::ipm::Sender::can_send ( ) const
pure virtualnoexcept

◆ connect_for_sends()

virtual std::string dunedaq::ipm::Sender::connect_for_sends ( const nlohmann::json & connection_info)
pure virtual

◆ generate_opmon_data()

void dunedaq::ipm::Sender::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 43 of file Sender.cpp.

44{
45
46 opmon::SenderInfo i;
47
48 i.set_bytes(m_bytes.exchange(0));
49 i.set_messages(m_messages.exchange(0));
50
51 publish(std::move(i));
52}
std::atomic< size_t > m_messages
Definition Sender.hpp:115
std::atomic< size_t > m_bytes
Definition Sender.hpp:114
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ send()

bool dunedaq::ipm::Sender::send ( const void * message,
message_size_t message_size,
const duration_t & timeout,
std::string const & metadata = "",
bool no_tmoexcept_mode = false )

Definition at line 16 of file Sender.cpp.

21{
22 if (message_size == 0) {
23 return true;
24 }
25
26 if (!can_send()) {
27 throw KnownStateForbidsSend(ERS_HERE);
28 }
29
30 if (!message) {
31 throw NullPointerPassedToSend(ERS_HERE);
32 }
33
34 auto res = send_(message, message_size, timeout, metadata, no_tmoexcept_mode);
35
36 m_bytes += message_size;
37 ++m_messages;
38
39 return res;
40}
#define ERS_HERE
virtual bool send_(const void *message, message_size_t N, const duration_t &timeout, std::string const &metadata, bool no_tmoexcept_mode)=0
virtual bool can_send() const noexcept=0

◆ send_()

virtual bool dunedaq::ipm::Sender::send_ ( const void * message,
message_size_t N,
const duration_t & timeout,
std::string const & metadata,
bool no_tmoexcept_mode )
protectedpure virtual

Member Data Documentation

◆ m_bytes

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

Definition at line 114 of file Sender.hpp.

114{ 0 };

◆ m_messages

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

Definition at line 115 of file Sender.hpp.

115{ 0 };

◆ s_block

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

Definition at line 74 of file Sender.hpp.

◆ s_no_block

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

Definition at line 75 of file Sender.hpp.


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