CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/EventFilter/StorageManager/interface/AlarmHandler.h

Go to the documentation of this file.
00001 // $Id: AlarmHandler.h,v 1.9 2011/04/18 15:18:57 mommsen Exp $
00003 
00004 #ifndef EventFilter_StorageManager_AlarmHandler_h
00005 #define EventFilter_StorageManager_AlarmHandler_h
00006 
00007 #include <string>
00008 
00009 #include "boost/shared_ptr.hpp"
00010 #include "boost/thread/mutex.hpp"
00011 
00012 #include "xcept/Exception.h"
00013 #include "xdaq/Application.h"
00014 #include "xdata/InfoSpace.h"
00015 
00016 
00017 namespace stor {
00018 
00027   class AlarmHandler
00028   {
00029 
00030   public:
00031 
00032     enum ALARM_LEVEL { OKAY, WARNING, ERROR, FATAL };
00033     
00034     AlarmHandler() {};
00035     explicit AlarmHandler(xdaq::Application*);
00036 
00037     virtual ~AlarmHandler() {};
00038 
00042     virtual void notifySentinel
00043     (
00044       const ALARM_LEVEL,
00045       xcept::Exception&
00046     );
00047 
00051     virtual void raiseAlarm
00052     (
00053       const std::string name,
00054       const ALARM_LEVEL,
00055       xcept::Exception&
00056     );
00057 
00061     virtual void revokeAlarm(const std::string name);
00062 
00066     void clearAllAlarms();
00067 
00071     Logger& getLogger() const
00072     { return app_->getApplicationLogger(); }
00073 
00074 
00075   private:
00076 
00077     bool raiseAlarm
00078     (
00079       const std::string name,
00080       const std::string level,
00081       xcept::Exception&
00082     );
00083 
00084     xdaq::Application* app_;
00085     xdata::InfoSpace* alarmInfoSpace_;
00086 
00087     mutable boost::mutex mutex_;
00088 
00089   };
00090   
00091   typedef boost::shared_ptr<AlarmHandler> AlarmHandlerPtr;
00092 
00093 } // namespace stor
00094 
00095 #endif // EventFilter_StorageManager_AlarmHandler_h 
00096 
00097