artdaq_core  v1_07_00
 All Classes Namespaces Functions
StatisticsCollection.hh
1 #ifndef artdaq_core_Core_StatisticsCollection_hh
2 #define artdaq_core_Core_StatisticsCollection_hh
3 
4 #include "artdaq-core/Core/MonitoredQuantity.hh"
5 #include <map>
6 #include <memory>
7 #include <mutex>
8 #include <thread>
9 
10 namespace artdaq {
11  typedef std::shared_ptr<MonitoredQuantity> MonitoredQuantityPtr;
12 
14 
15  public:
16 
19 
20  void addMonitoredQuantity(const std::string & name,
21  MonitoredQuantityPtr mqPtr);
22  MonitoredQuantityPtr getMonitoredQuantity(const std::string & name) const;
23  void reset();
24 
25  void requestStop();
26  void run();
27 
28  private:
29 
30  explicit StatisticsCollection();
31 
32  // disallow any copying
33  StatisticsCollection(StatisticsCollection const &); // not implemented
34  void operator= (StatisticsCollection const &); // not implemented
35 
36  double calculationInterval_;
37  std::map<std::string, MonitoredQuantityPtr> monitoredQuantityMap_;
38 
39  bool thread_stop_requested_;
40  std::thread * calculation_thread_;
41  mutable std::mutex map_mutex_;
42  };
43 
44 }
45 
46 #endif /* artdaq_core_Core_StatisticsCollection_hh */
static StatisticsCollection & getInstance()