File indexing completed on 2023-03-17 11:26:54
0001 #ifndef STORAGE_FACTORY_STORAGE_MAKER_H
0002 #define STORAGE_FACTORY_STORAGE_MAKER_H
0003
0004 #include "Utilities/StorageFactory/interface/IOTypes.h"
0005 #include <string>
0006 #include <memory>
0007
0008 namespace edm::storage {
0009 class Storage;
0010 class StorageMaker {
0011 public:
0012 struct AuxSettings {
0013 unsigned int timeout = 0;
0014 unsigned int debugLevel = 0;
0015
0016 AuxSettings &setDebugLevel(unsigned int iLevel) {
0017 debugLevel = iLevel;
0018 return *this;
0019 }
0020
0021 AuxSettings &setTimeout(unsigned int iTime) {
0022 timeout = iTime;
0023 return *this;
0024 }
0025 };
0026
0027 StorageMaker() = default;
0028 virtual ~StorageMaker() = default;
0029
0030
0031
0032 virtual void stagein(const std::string &proto, const std::string &path, const AuxSettings &aux) const;
0033 virtual std::unique_ptr<Storage> open(const std::string &proto,
0034 const std::string &path,
0035 int mode,
0036 const AuxSettings &aux) const = 0;
0037 virtual bool check(const std::string &proto,
0038 const std::string &path,
0039 const AuxSettings &aux,
0040 IOOffset *size = nullptr) const;
0041 };
0042 }
0043 #endif