Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-31 04:19:42

0001 #ifndef IOPool_Streamer_StreamerFileReader_h
0002 #define IOPool_Streamer_StreamerFileReader_h
0003 
0004 #include "IOPool/Streamer/interface/StreamerInputSource.h"
0005 #include "FWCore/Utilities/interface/get_underlying_safe.h"
0006 
0007 #include <memory>
0008 #include <string>
0009 #include <vector>
0010 
0011 class EventMsgView;
0012 class InitMsgView;
0013 
0014 namespace edm {
0015   class ConfigurationDescriptions;
0016   class EventPrincipal;
0017   class EventSkipperByID;
0018   class FileCatalogItem;
0019   struct InputSourceDescription;
0020   class ParameterSet;
0021   namespace streamer {
0022     class StreamerInputFile;
0023     class StreamerFileReader : public StreamerInputSource {
0024     public:
0025       StreamerFileReader(ParameterSet const& pset, InputSourceDescription const& desc);
0026       ~StreamerFileReader() override;
0027 
0028       static void fillDescriptions(ConfigurationDescriptions& descriptions);
0029 
0030     private:
0031       InitMsgView const* getHeader();
0032       EventMsgView const* getNextEvent();
0033       bool newHeader();
0034       void updateMetaData(bool subsequent);
0035 
0036       Next checkNext() override;
0037       void skip(int toSkip) override;
0038       void genuineReadFile() override;
0039       void genuineCloseFile() override;
0040       void reset_() override;
0041 
0042       std::shared_ptr<EventSkipperByID const> eventSkipperByID() const {
0043         return get_underlying_safe(eventSkipperByID_);
0044       }
0045       std::shared_ptr<EventSkipperByID>& eventSkipperByID() { return get_underlying_safe(eventSkipperByID_); }
0046 
0047       std::vector<FileCatalogItem> streamerNames_;  // names of Streamer files
0048       edm::propagate_const<std::unique_ptr<StreamerInputFile>> streamReader_;
0049       edm::propagate_const<std::shared_ptr<EventSkipperByID>> eventSkipperByID_;
0050       int initialNumberOfEventsToSkip_;
0051       int prefetchMBytes_;
0052       bool isFirstFile_ = true;
0053       bool didArtificialFile_ = false;
0054     };
0055   }  // namespace streamer
0056 }  // namespace edm
0057 
0058 #endif