1 #include "artdaq-core/Core/StatisticsCollection.hh"
8 return singletonInstance;
11 StatisticsCollection::StatisticsCollection() : calculationInterval_(1.0)
13 thread_stop_requested_ =
false;
21 calculation_thread_->join();
28 std::lock_guard<std::mutex> scopedLock(map_mutex_);
29 monitoredQuantityMap_[name] = mqPtr;
35 std::lock_guard<std::mutex> scopedLock(map_mutex_);
37 std::map<std::string, MonitoredQuantityPtr>::const_iterator iter;
38 iter = monitoredQuantityMap_.find(name);
39 if (iter == monitoredQuantityMap_.end()) {
return emptyResult; }
45 std::lock_guard<std::mutex> scopedLock(map_mutex_);
46 std::map<std::string, MonitoredQuantityPtr>::const_iterator iter;
47 std::map<std::string, MonitoredQuantityPtr>::const_iterator iterEnd;
48 iterEnd = monitoredQuantityMap_.end();
49 for (iter = monitoredQuantityMap_.begin(); iter != iterEnd; ++iter)
51 iter->second->reset();
57 thread_stop_requested_ =
true;
62 while (!thread_stop_requested_)
64 long useconds =
static_cast<long>(calculationInterval_ * 1000000);
67 std::lock_guard<std::mutex> scopedLock(map_mutex_);
68 std::map<std::string, MonitoredQuantityPtr>::const_iterator iter;
69 std::map<std::string, MonitoredQuantityPtr>::const_iterator iterEnd;
70 iterEnd = monitoredQuantityMap_.end();
71 for (iter = monitoredQuantityMap_.begin(); iter != iterEnd; ++iter)
73 iter->second->calculateStatistics();
void addMonitoredQuantity(const std::string &name, MonitoredQuantityPtr mqPtr)
Registers a new MonitoredQuantity to be tracked by the StatisticsCollection.
static StatisticsCollection & getInstance()
Returns the singleton instance of the StatisticsCollection.
void reset()
Reset all MonitoredQuantity object in this StatisticsCollection.
void requestStop()
Stops the statistics calculation thread.
virtual ~StatisticsCollection() noexcept
StatisticsCollection Destructor.
A collection of MonitoredQuantity instances describing low-level statistics of the artdaq system...
MonitoredQuantityPtr getMonitoredQuantity(const std::string &name) const
Lookup and return a MonitoredQuantity from the StatisticsCollection.
void run()
Start the background thread that performs MonitoredQuantity statistics calculation.
std::shared_ptr< MonitoredQuantity > MonitoredQuantityPtr
A shared_ptr to a MonitoredQuantity instance.