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 {
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;
74 }
75 return true;
76 }

◆ 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 }
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

◆ 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: