00001 // $Id: DQMEventProcessor.h,v 1.9 2012/04/20 10:48:18 mommsen Exp $ 00003 00004 #ifndef EventFilter_StorageManager_DQMEventProcessor_h 00005 #define EventFilter_StorageManager_DQMEventProcessor_h 00006 00007 #include "toolbox/lang/Class.h" 00008 #include "toolbox/task/WaitingWorkLoop.h" 00009 #include "xdaq/Application.h" 00010 00011 #include <boost/shared_ptr.hpp> 00012 00013 #include "EventFilter/StorageManager/interface/AlarmHandler.h" 00014 #include "EventFilter/StorageManager/interface/DQMEventStore.h" 00015 #include "EventFilter/StorageManager/interface/I2OChain.h" 00016 #include "EventFilter/StorageManager/interface/SharedResources.h" 00017 00018 00019 namespace stor { 00020 00021 class QueueID; 00022 class StatisticsReporter; 00023 00024 00039 class DQMEventProcessor : public toolbox::lang::Class 00040 { 00041 public: 00042 00043 DQMEventProcessor(xdaq::Application*, SharedResourcesPtr sr); 00044 00045 ~DQMEventProcessor(); 00046 00053 bool processDQMEvents(toolbox::task::WorkLoop*); 00054 00058 void startWorkLoop(std::string workloopName); 00059 00060 00061 private: 00062 00063 //Prevent copying of the DQMEventProcessor 00064 DQMEventProcessor(DQMEventProcessor const&); 00065 DQMEventProcessor& operator=(DQMEventProcessor const&); 00066 00071 void processNextDQMEvent(); 00072 00076 void endOfRun(); 00077 00078 00079 xdaq::Application* app_; 00080 SharedResourcesPtr sharedResources_; 00081 00082 boost::posix_time::time_duration timeout_; 00083 bool actionIsActive_; 00084 uint32_t latestLumiSection_; 00085 unsigned int discardDQMUpdatesForOlderLS_; 00086 00087 toolbox::task::WorkLoop* processWL_; 00088 00089 DQMEventStore<I2OChain,DataSenderMonitorCollection,AlarmHandler> dqmEventStore_; 00090 00091 }; 00092 00093 } // namespace stor 00094 00095 #endif // EventFilter_StorageManager_DQMEventProcessor_h 00096 00097