DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType > Class Template Reference

#include <DataSubscriberModel.hpp>

Inheritance diagram for dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >:
[legend]
Collaboration diagram for dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >:
[legend]

Public Types

using inherited = SourceConcept
 
- 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

 DataSubscriberModel ()
 SourceModel Constructor.
 
 ~DataSubscriberModel ()
 
void init (const confmodel::DaqModule *cfg) override
 
void start ()
 
void stop ()
 
bool handle_payload (PayloadType &message)
 
- Public Member Functions inherited from dunedaq::datahandlinglibs::SourceConcept
 SourceConcept ()
 
virtual ~SourceConcept ()
 
 SourceConcept (const SourceConcept &)=delete
 SourceConcept is not copy-constructible.
 
SourceConceptoperator= (const SourceConcept &)=delete
 SourceConcept is not copy-assginable.
 
 SourceConcept (SourceConcept &&)=delete
 SourceConcept is not move-constructible.
 
SourceConceptoperator= (SourceConcept &&)=delete
 SourceConcept is not move-assignable.
 
- 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
 

Protected Member Functions

virtual void generate_opmon_data () override
 
- 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 Types

using source_t = dunedaq::iomanager::ReceiverConcept<PayloadType>
 
using sink_t = dunedaq::iomanager::SenderConcept<PayloadType>
 

Private Attributes

std::shared_ptr< source_tm_data_receiver
 
std::shared_ptr< sink_tm_data_sender
 
std::atomic< uint64_t > m_packets {0}
 
std::atomic< uint64_t > m_sum_packets {0}
 
std::atomic< uint64_t > m_dropped_packets {0}
 

Additional Inherited Members

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

Detailed Description

template<class PayloadType>
class dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >

Definition at line 33 of file DataSubscriberModel.hpp.

Member Typedef Documentation

◆ inherited

template<class PayloadType >
using dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::inherited = SourceConcept

Definition at line 36 of file DataSubscriberModel.hpp.

◆ sink_t

template<class PayloadType >
using dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::sink_t = dunedaq::iomanager::SenderConcept<PayloadType>
private

Definition at line 91 of file DataSubscriberModel.hpp.

◆ source_t

template<class PayloadType >
using dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::source_t = dunedaq::iomanager::ReceiverConcept<PayloadType>
private

Definition at line 88 of file DataSubscriberModel.hpp.

Constructor & Destructor Documentation

◆ DataSubscriberModel()

template<class PayloadType >
dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::DataSubscriberModel ( )
inline

SourceModel Constructor.

Parameters
nameInstance name for this SourceModel instance

Definition at line 42 of file DataSubscriberModel.hpp.

◆ ~DataSubscriberModel()

template<class PayloadType >
dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::~DataSubscriberModel ( )
inline

Definition at line 43 of file DataSubscriberModel.hpp.

43{}

Member Function Documentation

◆ generate_opmon_data()

template<class PayloadType >
virtual void dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::generate_opmon_data ( )
inlineoverrideprotectedvirtual

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

Reimplemented from dunedaq::opmonlib::MonitorableObject.

Definition at line 78 of file DataSubscriberModel.hpp.

78 {
79 opmon::DataSourceInfo info;
80 info.set_num_packets(m_packets.exchange(0));
81 info.set_sum_packets(m_sum_packets) ;
82 info.set_num_dropped_packets(m_dropped_packets.exchange(0));
83
84 this->publish(std::move(info));
85 }
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept

◆ handle_payload()

template<class PayloadType >
bool dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::handle_payload ( PayloadType & message)
inline

Definition at line 68 of file DataSubscriberModel.hpp.

69 {
70 ++m_packets;
72 if (!m_data_sender->try_send(std::move(message), iomanager::Sender::s_no_block)) {
74 }
75 return true;
76 }
static constexpr timeout_t s_no_block
Definition Sender.hpp:26

◆ init()

template<class PayloadType >
void dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::init ( const confmodel::DaqModule * cfg)
inlineoverridevirtual

Implements dunedaq::datahandlinglibs::SourceConcept.

Definition at line 45 of file DataSubscriberModel.hpp.

45 {
46 if (cfg->get_outputs().size() != 1) {
47 throw datahandlinglibs::InitializationError(ERS_HERE, "Only 1 output supported for subscribers");
48 }
49 m_data_sender = get_iom_sender<PayloadType>(cfg->get_outputs()[0]->UID());
50
51 if (cfg->get_inputs().size() != 1) {
52 throw datahandlinglibs::InitializationError(ERS_HERE, "Only 1 input supported for subscribers");
53 }
54 m_data_receiver = get_iom_receiver<PayloadType>(cfg->get_inputs()[0]->UID());
55 }
#define ERS_HERE
static std::shared_ptr< iomanager::SenderConcept< Datatype > > get_iom_sender(iomanager::ConnectionId const &id)
static std::shared_ptr< iomanager::ReceiverConcept< Datatype > > get_iom_receiver(iomanager::ConnectionId const &id)

◆ start()

template<class PayloadType >
void dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::start ( )
inlinevirtual

Implements dunedaq::datahandlinglibs::SourceConcept.

Definition at line 57 of file DataSubscriberModel.hpp.

57 {
58 m_packets = 0;
59 m_sum_packets = 0;
61 m_data_receiver->add_callback(std::bind(&DataSubscriberModel::handle_payload, this, std::placeholders::_1));
62 }

◆ stop()

template<class PayloadType >
void dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::stop ( )
inlinevirtual

Implements dunedaq::datahandlinglibs::SourceConcept.

Definition at line 64 of file DataSubscriberModel.hpp.

64 {
65 m_data_receiver->remove_callback();
66 }

Member Data Documentation

◆ m_data_receiver

template<class PayloadType >
std::shared_ptr<source_t> dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::m_data_receiver
private

Definition at line 89 of file DataSubscriberModel.hpp.

◆ m_data_sender

template<class PayloadType >
std::shared_ptr<sink_t> dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::m_data_sender
private

Definition at line 92 of file DataSubscriberModel.hpp.

◆ m_dropped_packets

template<class PayloadType >
std::atomic<uint64_t> dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::m_dropped_packets {0}
private

Definition at line 96 of file DataSubscriberModel.hpp.

96{0};

◆ m_packets

template<class PayloadType >
std::atomic<uint64_t> dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::m_packets {0}
private

Definition at line 94 of file DataSubscriberModel.hpp.

94{0};

◆ m_sum_packets

template<class PayloadType >
std::atomic<uint64_t> dunedaq::datahandlinglibs::DataSubscriberModel< PayloadType >::m_sum_packets {0}
private

Definition at line 95 of file DataSubscriberModel.hpp.

95{0};

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