DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::crtmodules::SourceModel< TargetPayloadType > Class Template Reference

#include <SourceModel.hpp>

Inheritance diagram for dunedaq::crtmodules::SourceModel< TargetPayloadType >:
[legend]
Collaboration diagram for dunedaq::crtmodules::SourceModel< TargetPayloadType >:
[legend]

Public Types

using sink_t = iomanager::SenderConcept<TargetPayloadType>
 
using inherited = SourceConcept
 
using data_t = nlohmann::json
 
- 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

 SourceModel ()
 SourceModel Constructor.
 
 ~SourceModel ()
 
void acquire_callback () override
 
bool handle_payload (char *message, std::size_t size)
 
std::size_t get_frame_size () const override
 
void generate_opmon_data () override
 
- Public Member Functions inherited from dunedaq::crtmodules::SourceConcept
 SourceConcept ()
 
virtual ~SourceConcept ()
 
 SourceConcept (const SourceConcept &)=delete
 SourceConcept is not copy-constructible.
 
SourceConceptoperator= (const SourceConcept &)=delete
 SourceConcept is not copy-assignable.
 
 SourceConcept (SourceConcept &&)=delete
 SourceConcept is not move-constructible.
 
SourceConceptoperator= (SourceConcept &&)=delete
 SourceConcept is not move-assignable.
 
void set_sink_config (const appmodel::DataMoveCallbackConf *sink_conf)
 
- 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 auto buffer_size = sizeof(TargetPayloadType)
 Buffer size based on TargetPayloadType.
 

Private Types

using sink_cb_t = std::shared_ptr<std::function<void(TargetPayloadType&&)>>
 

Private Attributes

bool m_callback_is_acquired { false }
 
sink_cb_t m_sink_callback
 
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
 
- Public Attributes inherited from dunedaq::crtmodules::SourceConcept
const appmodel::DataMoveCallbackConfm_sink_conf
 
- 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
 

Detailed Description

template<class TargetPayloadType>
class dunedaq::crtmodules::SourceModel< TargetPayloadType >

Definition at line 36 of file SourceModel.hpp.

Member Typedef Documentation

◆ data_t

template<class TargetPayloadType >
using dunedaq::crtmodules::SourceModel< TargetPayloadType >::data_t = nlohmann::json

Definition at line 41 of file SourceModel.hpp.

◆ inherited

template<class TargetPayloadType >
using dunedaq::crtmodules::SourceModel< TargetPayloadType >::inherited = SourceConcept

Definition at line 40 of file SourceModel.hpp.

◆ sink_cb_t

template<class TargetPayloadType >
using dunedaq::crtmodules::SourceModel< TargetPayloadType >::sink_cb_t = std::shared_ptr<std::function<void(TargetPayloadType&&)>>
private

Definition at line 102 of file SourceModel.hpp.

◆ sink_t

template<class TargetPayloadType >
using dunedaq::crtmodules::SourceModel< TargetPayloadType >::sink_t = iomanager::SenderConcept<TargetPayloadType>

Definition at line 39 of file SourceModel.hpp.

Constructor & Destructor Documentation

◆ SourceModel()

template<class TargetPayloadType >
dunedaq::crtmodules::SourceModel< TargetPayloadType >::SourceModel ( )
inline

SourceModel Constructor.

Parameters
nameInstance name for this SourceModel instance

Definition at line 52 of file SourceModel.hpp.

◆ ~SourceModel()

template<class TargetPayloadType >
dunedaq::crtmodules::SourceModel< TargetPayloadType >::~SourceModel ( )
inline

Definition at line 55 of file SourceModel.hpp.

55{}

Member Function Documentation

◆ acquire_callback()

template<class TargetPayloadType >
void dunedaq::crtmodules::SourceModel< TargetPayloadType >::acquire_callback ( )
inlineoverridevirtual

Implements dunedaq::crtmodules::SourceConcept.

Definition at line 57 of file SourceModel.hpp.

58 {
60 TLOG_DEBUG(5) << "SourceModel callback is already acquired!";
61 } else {
62 // Getting DataMoveCBRegistry
64 m_sink_callback = dmcbr->get_callback<TargetPayloadType>(inherited::m_sink_conf);
66 }
67 }
const appmodel::DataMoveCallbackConf * m_sink_conf
static std::shared_ptr< DataMoveCallbackRegistry > get()
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112

◆ generate_opmon_data()

template<class TargetPayloadType >
void dunedaq::crtmodules::SourceModel< TargetPayloadType >::generate_opmon_data ( )
inlineoverridevirtual

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

Reimplemented from dunedaq::opmonlib::MonitorableObject.

Definition at line 91 of file SourceModel.hpp.

91 {
92
93 opmon::SourceInfo info;
94 info.set_dropped_frames( m_dropped_packets.load() );
95
96 publish( std::move(info) );
97 }
std::atomic< uint64_t > m_dropped_packets
void publish(google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept

◆ get_frame_size()

template<class TargetPayloadType >
std::size_t dunedaq::crtmodules::SourceModel< TargetPayloadType >::get_frame_size ( ) const
inlineoverridevirtual

Implements dunedaq::crtmodules::SourceConcept.

Definition at line 86 of file SourceModel.hpp.

86 {
87 TargetPayloadType target_payload;
88 return target_payload.get_frame_size(); // TODO (DTE): Could be a static function?
89 }

◆ handle_payload()

template<class TargetPayloadType >
bool dunedaq::crtmodules::SourceModel< TargetPayloadType >::handle_payload ( char * message,
std::size_t size )
inlinevirtual

Implements dunedaq::crtmodules::SourceConcept.

Definition at line 69 of file SourceModel.hpp.

70 {
71 bool push_out = true;
72 if (push_out) {
73
74 TargetPayloadType& target_payload = *reinterpret_cast<TargetPayloadType*>(message);
75 (*m_sink_callback)(std::move(target_payload));
76
77 } else {
78 TargetPayloadType target_payload;
79 uint32_t bytes_copied = 0;
80 datahandlinglibs::buffer_copy(message, size, static_cast<void*>(&target_payload), bytes_copied, sizeof(target_payload));
81 }
82
83 return true;
84 }
void buffer_copy(const char *data, std::size_t size, void *buffer, std::uint32_t buffer_pos, const std::size_t &buffer_size)
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size

Member Data Documentation

◆ buffer_size

template<class TargetPayloadType >
auto dunedaq::crtmodules::SourceModel< TargetPayloadType >::buffer_size = sizeof(TargetPayloadType)
staticconstexpr

Buffer size based on TargetPayloadType.

Definition at line 46 of file SourceModel.hpp.

◆ m_callback_is_acquired

template<class TargetPayloadType >
bool dunedaq::crtmodules::SourceModel< TargetPayloadType >::m_callback_is_acquired { false }
private

Definition at line 101 of file SourceModel.hpp.

101{ false };

◆ m_dropped_packets

template<class TargetPayloadType >
std::atomic<uint64_t> dunedaq::crtmodules::SourceModel< TargetPayloadType >::m_dropped_packets {0}
private

Definition at line 105 of file SourceModel.hpp.

105{0};

◆ m_sink_callback

template<class TargetPayloadType >
sink_cb_t dunedaq::crtmodules::SourceModel< TargetPayloadType >::m_sink_callback
private

Definition at line 103 of file SourceModel.hpp.


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