00001 // $Id: FragmentMonitorCollection.h,v 1.8 2011/03/07 15:31:32 mommsen Exp $ 00003 00004 #ifndef EventFilter_StorageManager_FragmentMonitorCollection_h 00005 #define EventFilter_StorageManager_FragmentMonitorCollection_h 00006 00007 #include "xdata/Double.h" 00008 #include "xdata/UnsignedInteger32.h" 00009 00010 #include "EventFilter/StorageManager/interface/MonitorCollection.h" 00011 00012 00013 namespace stor { 00014 00023 class FragmentMonitorCollection : public MonitorCollection 00024 { 00025 private: 00026 00027 MonitoredQuantity allFragmentSizes_; 00028 MonitoredQuantity allFragmentBandwidth_; 00029 00030 MonitoredQuantity eventFragmentSizes_; 00031 MonitoredQuantity eventFragmentBandwidth_; 00032 00033 MonitoredQuantity dqmEventFragmentSizes_; 00034 MonitoredQuantity dqmEventFragmentBandwidth_; 00035 00036 00037 public: 00038 00039 struct FragmentStats 00040 { 00041 MonitoredQuantity::Stats allFragmentSizeStats; 00042 MonitoredQuantity::Stats allFragmentBandwidthStats; 00043 00044 MonitoredQuantity::Stats eventFragmentSizeStats; 00045 MonitoredQuantity::Stats eventFragmentBandwidthStats; 00046 00047 MonitoredQuantity::Stats dqmEventFragmentSizeStats; 00048 MonitoredQuantity::Stats dqmEventFragmentBandwidthStats; 00049 }; 00050 00051 explicit FragmentMonitorCollection(const utils::Duration_t& updateInterval); 00052 00056 void addFragmentSample(const double bytecount); 00057 00061 void addEventFragmentSample(const double bytecount); 00062 00066 void addDQMEventFragmentSample(const double bytecount); 00067 00068 const MonitoredQuantity& getAllFragmentSizeMQ() const { 00069 return allFragmentSizes_; 00070 } 00071 MonitoredQuantity& getAllFragmentSizeMQ() { 00072 return allFragmentSizes_; 00073 } 00074 00075 const MonitoredQuantity& getEventFragmentSizeMQ() const { 00076 return eventFragmentSizes_; 00077 } 00078 MonitoredQuantity& getEventFragmentSizeMQ() { 00079 return eventFragmentSizes_; 00080 } 00081 00082 const MonitoredQuantity& getDQMEventFragmentSizeMQ() const { 00083 return dqmEventFragmentSizes_; 00084 } 00085 MonitoredQuantity& getDQMEventFragmentSizeMQ() { 00086 return dqmEventFragmentSizes_; 00087 } 00088 00089 const MonitoredQuantity& getAllFragmentBandwidthMQ() const { 00090 return allFragmentBandwidth_; 00091 } 00092 MonitoredQuantity& getAllFragmentBandwidthMQ() { 00093 return allFragmentBandwidth_; 00094 } 00095 00096 const MonitoredQuantity& getEventFragmentBandwidthMQ() const { 00097 return eventFragmentBandwidth_; 00098 } 00099 MonitoredQuantity& getEventFragmentBandwidthMQ() { 00100 return eventFragmentBandwidth_; 00101 } 00102 00103 const MonitoredQuantity& getDQMEventFragmentBandwidthMQ() const { 00104 return dqmEventFragmentBandwidth_; 00105 } 00106 MonitoredQuantity& getDQMEventFragmentBandwidthMQ() { 00107 return dqmEventFragmentBandwidth_; 00108 } 00109 00113 void getStats(FragmentStats& stats) const; 00114 00115 00116 private: 00117 00118 //Prevent copying of the FragmentMonitorCollection 00119 FragmentMonitorCollection(FragmentMonitorCollection const&); 00120 FragmentMonitorCollection& operator=(FragmentMonitorCollection const&); 00121 00122 virtual void do_calculateStatistics(); 00123 virtual void do_reset(); 00124 virtual void do_appendInfoSpaceItems(InfoSpaceItems&); 00125 virtual void do_updateInfoSpaceItems(); 00126 00127 xdata::UnsignedInteger32 receivedFrames_; // Total I2O frames received 00128 xdata::Double instantBandwidth_; // Recent bandwidth in MB/s 00129 xdata::Double instantRate_; // Recent number of frames/s 00130 00131 }; 00132 00133 } // namespace stor 00134 00135 #endif // EventFilter_StorageManager_FragmentMonitorCollection_h 00136 00137