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_;
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 }
0056 }
0057
0058 #endif