00001 #ifndef EvFStepperService_H 00002 #define EvFStepperService_H 1 00003 00004 00005 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00006 #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h" 00007 #include "DataFormats/Provenance/interface/EventID.h" 00008 #include "DataFormats/Provenance/interface/Timestamp.h" 00009 #include "DataFormats/Provenance/interface/ModuleDescription.h" 00010 00011 #include <pthread.h> 00012 00013 #include "EventFilter/Utilities/interface/ServiceWeb.h" 00014 00015 #include <string> 00016 #include <vector> 00017 00018 namespace evf { 00019 00020 class Stepper : public ServiceWeb 00021 { 00022 public: 00023 Stepper(const edm::ParameterSet&,edm::ActivityRegistry&); 00024 ~Stepper(); 00025 00026 void defaultWebPage(xgi::Input *in, xgi::Output *out); 00027 void postBeginJob(); 00028 void postEndJob(); 00029 00030 void preEventProcessing(const edm::EventID&, const edm::Timestamp&); 00031 void postEventProcessing(const edm::Event&, const edm::EventSetup&); 00032 00033 void preSource(); 00034 void postSource(); 00035 00036 00037 void preModule(const edm::ModuleDescription&); 00038 void postModule(const edm::ModuleDescription&); 00039 void publish(xdata::InfoSpace *) {} 00040 00041 private: 00042 00043 void wait_on_signal() 00044 { 00045 pthread_mutex_lock(&mutex_); 00046 pthread_cond_wait(&cond_,&mutex_); 00047 pthread_mutex_unlock(&mutex_); 00048 } 00049 std::string epstate_; 00050 std::string modulelabel_; 00051 std::string modulename_; 00052 unsigned int rid_; 00053 unsigned int eid_; 00054 std::string original_referrer_; 00055 pthread_mutex_t mutex_; 00056 pthread_cond_t cond_; 00057 bool step_; 00058 }; 00059 00060 } 00061 00062 #endif