![]() |
![]() |
00001 #ifndef FWCore_Sources_RawInputSource_h 00002 #define FWCore_Sources_RawInputSource_h 00003 00004 /*---------------------------------------------------------------------- 00005 ----------------------------------------------------------------------*/ 00006 00007 #include <memory> 00008 #include <utility> 00009 00010 #include "boost/shared_ptr.hpp" 00011 00012 #include "DataFormats/Provenance/interface/EventID.h" 00013 #include "FWCore/Framework/interface/InputSource.h" 00014 #include "FWCore/Framework/interface/Frameworkfwd.h" 00015 00016 namespace edm { 00017 class ParameterSet; 00018 class Timestamp; 00019 class RawInputSource : public InputSource { 00020 public: 00021 explicit RawInputSource(ParameterSet const& pset, InputSourceDescription const& desc); 00022 virtual ~RawInputSource(); 00023 static void fillDescription(ParameterSetDescription& description); 00024 00025 protected: 00026 EventPrincipal* makeEvent(EventPrincipal& eventPrincipal, EventAuxiliary const& eventAuxiliary); 00027 virtual bool checkNextEvent() = 0; 00028 virtual EventPrincipal* read(EventPrincipal& eventPrincipal) = 0; 00029 void setInputFileTransitionsEachEvent() {inputFileTransitionsEachEvent_ = true;} 00030 00031 private: 00032 virtual EventPrincipal* readEvent_(EventPrincipal& eventPrincipal); 00033 virtual boost::shared_ptr<LuminosityBlockAuxiliary> readLuminosityBlockAuxiliary_(); 00034 virtual boost::shared_ptr<RunAuxiliary> readRunAuxiliary_(); 00035 virtual void reset_(); 00036 virtual void rewind_(); 00037 virtual ItemType getNextItemType(); 00038 virtual void preForkReleaseResources(); 00039 00040 bool inputFileTransitionsEachEvent_; 00041 }; 00042 } 00043 #endif