00001 #ifndef IOPool_Streamer_StreamerFileReader_h 00002 #define IOPool_Streamer_StreamerFileReader_h 00003 00004 #include "IOPool/Streamer/interface/StreamerInputSource.h" 00005 00006 #include "boost/shared_ptr.hpp" 00007 00008 #include <memory> 00009 #include <string> 00010 #include <vector> 00011 00012 class EventMsgView; 00013 class InitMsgView; 00014 00015 namespace edm { 00016 class ConfigurationDescriptions; 00017 class EventPrincipal; 00018 class EventSkipperByID; 00019 struct InputSourceDescription; 00020 class ParameterSet; 00021 class StreamerInputFile; 00022 class StreamerFileReader : public StreamerInputSource { 00023 public: 00024 StreamerFileReader(ParameterSet const& pset, InputSourceDescription const& desc); 00025 virtual ~StreamerFileReader(); 00026 virtual EventPrincipal* read(); 00027 00028 InitMsgView const* getHeader(); 00029 EventMsgView const* getNextEvent(); 00030 bool newHeader(); 00031 static void fillDescriptions(ConfigurationDescriptions& descriptions); 00032 00033 private: 00034 std::vector<std::string> streamerNames_; // names of Streamer files 00035 std::auto_ptr<StreamerInputFile> streamReader_; 00036 boost::shared_ptr<EventSkipperByID> eventSkipperByID_; 00037 int numberOfEventsToSkip_; 00038 }; 00039 } //end-of-namespace-def 00040 00041 #endif 00042