![]() |
![]() |
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