CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/CondCore/ORA/interface/Monitoring.h

Go to the documentation of this file.
00001 #ifndef INCLUDE_ORA_MONITORING_H
00002 #define INCLUDE_ORA_MONITORING_H
00003 
00004 //
00005 #include <string>
00006 #include <map>
00007 #include "boost/date_time/posix_time/posix_time.hpp"
00008 #include <iostream>
00009 
00010 namespace ora {
00011 
00012   struct TransactionMonitoringData {
00013     explicit TransactionMonitoringData( boost::posix_time::ptime start );
00014     void stop(bool commit_status=true);
00015     boost::posix_time::ptime m_start;
00016     boost::posix_time::ptime m_stop;
00017     bool m_status;
00018   };
00019 
00020   class SessionMonitoringData {
00021   public:
00022     SessionMonitoringData( boost::posix_time::ptime start, const std::string& connectionString );
00023     ~SessionMonitoringData();
00024     size_t newTransaction();
00025     size_t stopTransaction( bool commit_status=true);
00026     void stop();
00027     size_t numberOfTransactions() const ;
00028     void report( std::ostream& out ) const ;
00029     std::string m_connectionString;
00030     boost::posix_time::ptime m_start;
00031     boost::posix_time::ptime m_stop;
00032   private:
00033     TransactionMonitoringData* m_currentTransaction;
00034     std::map<std::string,TransactionMonitoringData*> m_transactions;
00035     size_t m_ncur;
00036   };
00037 
00038   class Monitoring {
00039   public:
00040     static Monitoring& get(); 
00041     static bool isEnabled();
00042     static void enable();
00043     static std::string& outFileName();
00044   public:
00045 
00047     virtual ~Monitoring() throw();
00048 
00049     SessionMonitoringData* startSession( const std::string& connectionString );
00050 
00051     void report( std::ostream& out );
00052   private:
00053     static bool s_enabled;
00054  
00055   private:
00056     // 
00057     Monitoring();
00058   private:
00059 
00060     std::map<std::string,SessionMonitoringData*> m_sessions;
00061   };
00062 
00063 }
00064 
00065 #endif