CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/FWCore/Framework/interface/IEventProcessor.h

Go to the documentation of this file.
00001 #ifndef FWCore_Framework_IEventProcessor_h
00002 #define FWCore_Framework_IEventProcessor_h
00003 
00004 /*
00005 Abstract base class for Event Processors
00006 
00007 Original Authors: W. David Dagenhart, Marc Paterno
00008 */
00009 
00010 #include "DataFormats/Provenance/interface/ProcessHistoryID.h"
00011 #include "DataFormats/Provenance/interface/RunID.h"
00012 #include "DataFormats/Provenance/interface/LuminosityBlockID.h"
00013 
00014 
00015 #include <string>
00016 
00017 namespace statemachine {
00018   class Restart;
00019   class Run;
00020 }
00021 
00022 namespace edm {
00023   class IEventProcessor {
00024   public:
00025 
00026     // Status codes:
00027     //   0     successful completion
00028     //   1     exception of unknown type caught
00029     //   2     everything else
00030     //   3     signal received
00031     //   4     input complete
00032     //   5     call timed out
00033     //   6     input count complete
00034     enum Status { epSuccess=0, epException=1, epOther=2, epSignal=3,
00035                   epInputComplete=4, epTimedOut=5, epCountComplete=6 };
00036 
00037     // Eventually, we might replace StatusCode with a class. This
00038     // class should have an automatic conversion to 'int'.
00039     typedef Status StatusCode ;
00040 
00041     virtual ~IEventProcessor();
00042 
00043     virtual StatusCode runToCompletion(bool onlineStateTransitions) = 0;
00044 
00045     virtual void readFile() = 0;
00046     virtual void closeInputFile(bool cleaningUpAfterException) = 0;
00047     virtual void openOutputFiles() = 0;
00048     virtual void closeOutputFiles() = 0;
00049 
00050     virtual void respondToOpenInputFile() = 0;
00051     virtual void respondToCloseInputFile() = 0;
00052     virtual void respondToOpenOutputFiles() = 0;
00053     virtual void respondToCloseOutputFiles() = 0;
00054 
00055     virtual void startingNewLoop() = 0;
00056     virtual bool endOfLoop() = 0;
00057     virtual void rewindInput() = 0;
00058     virtual void prepareForNextLoop() = 0;
00059     virtual bool shouldWeCloseOutput() const = 0;
00060 
00061     virtual void doErrorStuff() = 0;
00062 
00063     virtual void beginRun(statemachine::Run const& run) = 0;
00064     virtual void endRun(statemachine::Run const& run, bool cleaningUpAfterException) = 0;
00065 
00066     virtual void beginLumi(ProcessHistoryID const& phid, RunNumber_t run, LuminosityBlockNumber_t lumi) = 0;
00067     virtual void endLumi(ProcessHistoryID const& phid, RunNumber_t run, LuminosityBlockNumber_t lumi, bool cleaningUpAfterException) = 0;
00068 
00069     virtual statemachine::Run readAndCacheRun() = 0;
00070     virtual statemachine::Run readAndMergeRun() = 0;
00071     virtual int readAndCacheLumi() = 0;
00072     virtual int readAndMergeLumi() = 0;
00073     virtual void writeRun(statemachine::Run const& run) = 0;
00074     virtual void deleteRunFromCache(statemachine::Run const& run) = 0;
00075     virtual void writeLumi(ProcessHistoryID const& phid, RunNumber_t run, LuminosityBlockNumber_t lumi) = 0;
00076     virtual void deleteLumiFromCache(ProcessHistoryID const& phid,RunNumber_t run, LuminosityBlockNumber_t lumi) = 0;
00077 
00078     virtual void readAndProcessEvent() = 0;
00079     virtual bool shouldWeStop() const = 0;
00080 
00081     virtual void setExceptionMessageFiles(std::string& message) = 0;
00082     virtual void setExceptionMessageRuns(std::string& message) = 0;
00083     virtual void setExceptionMessageLumis(std::string& message) = 0;
00084 
00085     virtual bool alreadyHandlingException() const = 0;
00086   };
00087 }
00088 
00089 #endif