File indexing completed on 2023-03-17 11:01:59
0001 #ifndef FWCore_Framework_DependentRecordIntervalFinder_h
0002 #define FWCore_Framework_DependentRecordIntervalFinder_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #include <memory>
0025 #include <vector>
0026
0027
0028 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
0029 #include "FWCore/Utilities/interface/propagate_const.h"
0030
0031
0032 namespace edm {
0033 namespace eventsetup {
0034 class EventSetupRecordProvider;
0035
0036 class DependentRecordIntervalFinder : public EventSetupRecordIntervalFinder {
0037 public:
0038 DependentRecordIntervalFinder(const EventSetupRecordKey&);
0039 DependentRecordIntervalFinder(const DependentRecordIntervalFinder&) = delete;
0040 const DependentRecordIntervalFinder& operator=(const DependentRecordIntervalFinder&) = delete;
0041 ~DependentRecordIntervalFinder() override;
0042
0043
0044 bool haveProviders() const { return !providers_.empty(); }
0045
0046
0047
0048
0049 void addProviderWeAreDependentOn(std::shared_ptr<EventSetupRecordProvider>);
0050
0051 void setAlternateFinder(std::shared_ptr<EventSetupRecordIntervalFinder>);
0052
0053 protected:
0054 void setIntervalFor(const EventSetupRecordKey&, const IOVSyncValue&, ValidityInterval&) override;
0055
0056 private:
0057 void doResetInterval(const eventsetup::EventSetupRecordKey&) override;
0058
0059
0060 bool isConcurrentFinder() const override;
0061
0062 bool isNonconcurrentAndIOVNeedsUpdate(const EventSetupRecordKey&, const IOVSyncValue&) const override;
0063
0064 typedef std::vector<edm::propagate_const<std::shared_ptr<EventSetupRecordProvider>>> Providers;
0065 Providers providers_;
0066
0067 edm::propagate_const<std::shared_ptr<EventSetupRecordIntervalFinder>> alternate_;
0068 std::vector<ValidityInterval> previousIOVs_;
0069 };
0070
0071 }
0072 }
0073 #endif