00001 #ifndef HLT_EPRUNNER_H 00002 #define HLT_EPRUNNER_H 00003 00004 #include "FWCore/Framework/interface/EventProcessor.h" 00005 #include "FWCore/ServiceRegistry/interface/ServiceToken.h" 00006 #include "FWCore/PluginManager/interface/ProblemTracker.h" 00007 #include "IOPool/Streamer/interface/HLTInfo.h" 00008 00009 #include "boost/thread/thread.hpp" 00010 #include "boost/shared_ptr.hpp" 00011 00012 #include <string> 00013 #include <memory> 00014 00015 namespace stor 00016 { 00017 class EPRunner 00018 { 00019 public: 00020 EPRunner(const std::string& config_string, 00021 std::auto_ptr<HLTInfo>); 00022 ~EPRunner(); 00023 00024 void start(); 00025 void join(); 00026 00027 const edm::ProductRegistry& getRegistry(); 00028 edm::ServiceToken getToken() { return ep_.getToken();} 00029 HLTInfo* getInfo() { return info_; } 00030 00031 private: 00032 EPRunner(const EPRunner&); 00033 EPRunner& operator=(const EPRunner&); 00034 00035 static void run(EPRunner*); 00036 void dowork(); 00037 HLTInfo* info_; 00038 edm::ServiceToken tok_; 00039 edm::AssertHandler ah_; 00040 edm::EventProcessor ep_; 00041 boost::shared_ptr<boost::thread> me_; 00042 }; 00043 } 00044 00045 #endif 00046