CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/EventFilter/StorageManager/interface/StateMachineMonitorCollection.h

Go to the documentation of this file.
00001 // $Id: StateMachineMonitorCollection.h,v 1.8 2011/03/07 15:31:32 mommsen Exp $
00003 
00004 #ifndef EventFilter_StorageManager_StateMachineMonitorCollection_h
00005 #define EventFilter_StorageManager_StateMachineMonitorCollection_h
00006 
00007 #include <ostream>
00008 #include <string>
00009 
00010 #include "xdata/String.h"
00011 
00012 #include "EventFilter/StorageManager/interface/MonitorCollection.h"
00013 #include "EventFilter/StorageManager/interface/TransitionRecord.h"
00014 
00015 
00016 namespace stor {
00017 
00026   class StateMachineMonitorCollection : public MonitorCollection
00027   {
00028 
00029   public:
00030 
00031     explicit StateMachineMonitorCollection(const utils::Duration_t& updateInterval);
00032 
00036     void updateHistory(const TransitionRecord&);
00037 
00041     typedef std::vector<TransitionRecord> History;
00042     void getHistory(History&) const;
00043 
00047     void dumpHistory(std::ostream&) const;
00048 
00052     void setExternallyVisibleState( const std::string& );
00053 
00057     const std::string& externallyVisibleState() const;
00058 
00062     void setStatusMessage( const std::string& );
00063 
00067     void clearStatusMessage();
00068 
00072     bool statusMessage( std::string& msg ) const;
00073 
00077     std::string innerStateName() const;
00078 
00079   private:
00080 
00081     //Prevent copying of the StateMachineMonitorCollection
00082     StateMachineMonitorCollection(StateMachineMonitorCollection const&);
00083     StateMachineMonitorCollection& operator=(StateMachineMonitorCollection const&);
00084 
00085     virtual void do_calculateStatistics();
00086     virtual void do_reset();
00087     virtual void do_appendInfoSpaceItems(InfoSpaceItems&);
00088     virtual void do_updateInfoSpaceItems();
00089 
00090     History history_;
00091     std::string externallyVisibleState_;
00092     mutable boost::mutex stateMutex_;
00093 
00094     std::string statusMessage_;
00095 
00096     xdata::String stateName_;
00097 
00098   };
00099   
00100 } // namespace stor
00101 
00102 #endif // EventFilter_StorageManager_StateMachineMonitorCollection_h 
00103 
00104