![]() |
|
|
Generated: 18 Jul 2008 |
00001 // $Id: ChronoStatSvc.h,v 1.13 2008/05/13 12:37:19 marcocle Exp $ 00002 // ============================================================================ 00003 // CVS tag $Name: v17r1 $, version $Revision: 1.13 $ 00004 // ============================================================================ 00005 #ifndef GAUDISVC_CHRONOSTATSVC_H__ 00006 #define GAUDISVC_CHRONOSTATSVC_H__ 00007 // ============================================================================ 00008 // include files 00009 // ============================================================================ 00010 // STD & STL 00011 // ============================================================================ 00012 #include <string> 00013 #include <map> 00014 #include <functional> 00015 // ============================================================================ 00016 // GaudiKernel 00017 // ============================================================================ 00018 #include "GaudiKernel/SvcFactory.h" 00019 #include "GaudiKernel/Kernel.h" 00020 #include "GaudiKernel/Service.h" 00021 #include "GaudiKernel/IChronoStatSvc.h" 00022 // ============================================================================ 00024 // ============================================================================ 00025 class ISvcLocator ; 00026 class IMessageSvc ; 00027 // ============================================================================ 00036 class ChronoStatSvc: virtual public IChronoStatSvc, 00037 public Service 00038 { 00039 public: 00040 // ============================================================================ 00042 typedef std::map<IChronoStatSvc::ChronoTag,ChronoEntity> ChronoMap ; 00043 typedef std::map<IChronoStatSvc::StatTag,StatEntity> StatMap ; 00044 // ============================================================================ 00045 public: 00046 // ============================================================================ 00048 virtual StatusCode initialize(); 00050 virtual StatusCode finalize(); 00052 virtual StatusCode queryInterface 00053 ( const InterfaceID& riid, void** ppvi ); 00054 // ============================================================================ 00055 public: 00056 // ============================================================================ 00060 virtual ChronoEntity* chronoStart 00061 ( const IChronoStatSvc::ChronoTag& chronoTag ); 00062 // ============================================================================ 00066 virtual const ChronoEntity* chronoStop 00067 ( const IChronoStatSvc::ChronoTag& chronoTag ); 00068 // ============================================================================ 00072 virtual IChronoStatSvc::ChronoTime chronoDelta 00073 ( const IChronoStatSvc::ChronoTag& chronoTag, 00074 IChronoStatSvc::ChronoType theType ); 00075 // ============================================================================ 00079 virtual void chronoPrint 00080 ( const IChronoStatSvc::ChronoTag& chronoTag ); 00081 // ============================================================================ 00085 virtual ChronoStatus chronoStatus 00086 ( const IChronoStatSvc::ChronoTag& chronoTag ); 00087 // ============================================================================ 00092 virtual void stat 00093 ( const IChronoStatSvc::StatTag & statTag , 00094 const IChronoStatSvc::StatFlag & statFlag ) ; 00095 // ============================================================================ 00100 virtual void statPrint 00101 ( const IChronoStatSvc::ChronoTag& statTag) ; 00102 // ============================================================================ 00108 virtual const ChronoEntity* chrono 00109 ( const IChronoStatSvc::ChronoTag& t ) const ; 00110 // ============================================================================ 00116 virtual const StatEntity* stat 00117 ( const IChronoStatSvc::StatTag& t ) const ; 00118 // ============================================================================ 00123 ChronoStatSvc ( const std::string& name, ISvcLocator* svcloc ); 00125 virtual ~ChronoStatSvc(); 00126 // ============================================================================ 00127 protected: 00128 // ============================================================================ 00129 // print the "Stat" part of the ChronoStatSvc 00130 void printStats() ; 00131 // ============================================================================ 00132 private: 00133 // ============================================================================ 00134 // default constructor is disabled 00135 ChronoStatSvc() ; 00136 // copy constructor is disabled 00137 ChronoStatSvc( const ChronoStatSvc& ) ; 00138 // assignement operator constructor is disabled 00139 ChronoStatSvc& operator=( const ChronoStatSvc& ) ; 00140 // ============================================================================ 00142 void saveStats(); 00143 // ============================================================================ 00144 private: 00145 // ============================================================================ 00147 ChronoMap m_chronoEntities; 00149 int m_intChronoPrintLevel ; 00150 MSG::Level m_chronoPrintLevel ; 00152 bool m_chronoTableFlag ; 00154 bool m_chronoCoutFlag ; 00156 bool m_chronoOrderFlag ; 00158 bool m_printUserTime ; 00160 bool m_printSystemTime ; 00162 bool m_printEllapsedTime ; 00163 00164 // property 00165 long m_numberOfSkippedEventsForMemStat ; 00166 00168 StatMap m_statEntities; 00169 00171 int m_intStatPrintLevel ; 00172 MSG::Level m_statPrintLevel ; 00174 bool m_statTableFlag ; 00176 bool m_statCoutFlag ; 00178 bool m_statOrderFlag ; 00180 00182 StringProperty m_statsOutFileName; 00183 00184 // the header row 00185 std::string m_header ; 00186 // format for regular statistical printout rows 00187 std::string m_format1 ; 00188 // format for "efficiency" statistical printout rows 00189 std::string m_format2 ; 00190 // flag to use the special "efficiency" format 00191 bool m_useEffFormat ; 00192 // ============================================================================ 00193 }; 00194 // ============================================================================ 00195 // The END 00196 // ============================================================================ 00197 #endif // GAUDISVC_CHRONOSTATSVC_H 00198 // ============================================================================ 00199 00200