DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::trigger::Latency Class Reference

#include <Latency.hpp>

Public Types

enum class  TimeUnit { Microseconds = 1 , Milliseconds = 2 }
 

Public Member Functions

 Latency (TimeUnit time_unit=TimeUnit::Microseconds)
 
 ~Latency ()
 
void update_latency_in (uint64_t latency)
 
void update_latency_out (uint64_t latency)
 
latency get_latency_in () const
 
latency get_latency_out () const
 

Private Types

using latency = uint64_t
 

Private Member Functions

void setup_conversion ()
 
uint64_t get_current_system_time () const
 
void update_single_latency (uint64_t latency, std::atomic< uint64_t > &latency_atomic)
 

Private Attributes

std::atomic< latencym_latency_in
 
std::atomic< latencym_latency_out
 
TimeUnit m_time_unit
 
double m_clock_ticks_conversion
 
std::function< uint64_t()> m_get_current_time
 

Detailed Description

Definition at line 19 of file Latency.hpp.

Member Typedef Documentation

◆ latency

using dunedaq::trigger::Latency::latency = uint64_t
private

Definition at line 21 of file Latency.hpp.

Member Enumeration Documentation

◆ TimeUnit

Enumerator
Microseconds 
Milliseconds 

Definition at line 25 of file Latency.hpp.

Constructor & Destructor Documentation

◆ Latency()

dunedaq::trigger::Latency::Latency ( TimeUnit time_unit = TimeUnit::Microseconds)
inline

Definition at line 32 of file Latency.hpp.

33 : m_latency_in(0)
34 , m_latency_out(0)
35 , m_time_unit(time_unit)
36 {
38 }
std::atomic< latency > m_latency_in
Definition Latency.hpp:87
std::atomic< latency > m_latency_out
Definition Latency.hpp:88

◆ ~Latency()

dunedaq::trigger::Latency::~Latency ( )
inline

Definition at line 40 of file Latency.hpp.

40{}

Member Function Documentation

◆ get_current_system_time()

uint64_t dunedaq::trigger::Latency::get_current_system_time ( ) const
inlineprivate

Definition at line 76 of file Latency.hpp.

76{ return m_get_current_time(); }
std::function< uint64_t()> m_get_current_time
Definition Latency.hpp:93

◆ get_latency_in()

latency dunedaq::trigger::Latency::get_latency_in ( ) const
inline

Definition at line 49 of file Latency.hpp.

49{ return m_latency_in.load(); }

◆ get_latency_out()

latency dunedaq::trigger::Latency::get_latency_out ( ) const
inline

Definition at line 52 of file Latency.hpp.

52{ return m_latency_out.load(); }

◆ setup_conversion()

void dunedaq::trigger::Latency::setup_conversion ( )
inlineprivate

Definition at line 56 of file Latency.hpp.

57 {
59 m_clock_ticks_conversion = 16 * 1e-3; // Conversion for microseconds
60 m_get_current_time = []() {
61 return std::chrono::duration_cast<std::chrono::microseconds>(
62 std::chrono::system_clock::now().time_since_epoch())
63 .count();
64 };
65 } else {
66 m_clock_ticks_conversion = 16 * 1e-6; // Conversion for milliseconds
67 m_get_current_time = []() {
68 return std::chrono::duration_cast<std::chrono::milliseconds>(
69 std::chrono::system_clock::now().time_since_epoch())
70 .count();
71 };
72 }
73 }

◆ update_latency_in()

void dunedaq::trigger::Latency::update_latency_in ( uint64_t latency)
inline

Definition at line 43 of file Latency.hpp.

void update_single_latency(uint64_t latency, std::atomic< uint64_t > &latency_atomic)
Definition Latency.hpp:79

◆ update_latency_out()

void dunedaq::trigger::Latency::update_latency_out ( uint64_t latency)
inline

Definition at line 46 of file Latency.hpp.

◆ update_single_latency()

void dunedaq::trigger::Latency::update_single_latency ( uint64_t latency,
std::atomic< uint64_t > & latency_atomic )
inlineprivate

Definition at line 79 of file Latency.hpp.

80 {
81 uint64_t current_time = get_current_system_time();
82 uint64_t latency_time = latency * m_clock_ticks_conversion;
83 uint64_t diff = (current_time >= latency_time) ? (current_time - latency_time) : 0;
84 latency_atomic.store(diff);
85 }
uint64_t get_current_system_time() const
Definition Latency.hpp:76

Member Data Documentation

◆ m_clock_ticks_conversion

double dunedaq::trigger::Latency::m_clock_ticks_conversion
private

Definition at line 90 of file Latency.hpp.

◆ m_get_current_time

std::function<uint64_t()> dunedaq::trigger::Latency::m_get_current_time
private

Definition at line 93 of file Latency.hpp.

◆ m_latency_in

std::atomic<latency> dunedaq::trigger::Latency::m_latency_in
private

Definition at line 87 of file Latency.hpp.

◆ m_latency_out

std::atomic<latency> dunedaq::trigger::Latency::m_latency_out
private

Definition at line 88 of file Latency.hpp.

◆ m_time_unit

TimeUnit dunedaq::trigger::Latency::m_time_unit
private

Definition at line 89 of file Latency.hpp.


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