Skip to content

Commit 98c6faf

Browse files
committed
Moved getting consumes information to ModuleHolder
1 parent 3bc1188 commit 98c6faf

File tree

13 files changed

+234
-221
lines changed

13 files changed

+234
-221
lines changed

FWCore/Framework/interface/ModuleRegistry.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,14 @@ namespace edm {
104104
}
105105
}
106106

107+
template <typename F>
108+
void forAllModuleHolders(F iFunc) const {
109+
for (auto& labelMod : labelToModule_) {
110+
maker::ModuleHolder const* t = labelMod.second.get();
111+
iFunc(t);
112+
}
113+
}
114+
107115
unsigned int maxModuleID() const { return maxModuleID_; }
108116

109117
private:

FWCore/Framework/interface/PathsAndConsumesOfModules.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,13 @@
2929
namespace edm {
3030

3131
class ModuleDescription;
32+
class ModuleRegistry;
3233
class ProductRegistry;
3334
class Schedule;
3435

36+
namespace maker {
37+
class ModuleHolder;
38+
} // namespace maker
3539
namespace eventsetup {
3640
struct ComponentDescription;
3741
class ESProductResolverProvider;
@@ -96,9 +100,8 @@ namespace edm {
96100
std::vector<std::vector<ModuleDescription const*>> modulesOnPaths_;
97101
std::vector<std::vector<ModuleDescription const*>> modulesOnEndPaths_;
98102

99-
// Gives a translation from the module ID to the index into the
100-
// following data member
101-
std::vector<std::pair<unsigned int, unsigned int>> moduleIDToIndex_;
103+
// Gives a translation from the module ID to the holder
104+
std::vector<edm::maker::ModuleHolder const*> moduleIDToHolder_;
102105

103106
std::array<std::vector<std::vector<ModuleDescription const*>>, NumBranchTypes> modulesWhoseProductsAreConsumedBy_;
104107

@@ -114,6 +117,7 @@ namespace edm {
114117
std::vector<std::vector<eventsetup::ComponentDescription const*>> esModulesWhoseProductsAreConsumedByESModule_;
115118

116119
Schedule const* schedule_ = nullptr;
120+
ModuleRegistry const* moduleRegistry_ = nullptr;
117121
ProducedByESModule producedByESModule_;
118122
std::shared_ptr<ProductRegistry const> preg_;
119123
bool eventSetupInfoInitialized_ = false;

FWCore/Framework/interface/Schedule.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ namespace edm {
289289
/// returns the collection of pointers to workers
290290
AllWorkers const& allWorkers() const;
291291

292+
ModuleRegistry const& moduleRegistry() const { return *moduleRegistry_; }
293+
292294
/// Convert "@currentProcess" in InputTag process names to the actual current process name.
293295
void convertCurrentProcessAlias(std::string const& processName);
294296

@@ -301,7 +303,9 @@ namespace edm {
301303
return get_underlying_safe(resultsInserter_);
302304
}
303305
std::shared_ptr<TriggerResultInserter>& resultsInserter() { return get_underlying_safe(resultsInserter_); }
304-
std::shared_ptr<ModuleRegistry const> moduleRegistry() const { return get_underlying_safe(moduleRegistry_); }
306+
std::shared_ptr<ModuleRegistry const> moduleRegistrySharedPtr() const {
307+
return get_underlying_safe(moduleRegistry_);
308+
}
305309
std::shared_ptr<ModuleRegistry>& moduleRegistry() { return get_underlying_safe(moduleRegistry_); }
306310

307311
edm::propagate_const<std::shared_ptr<ModuleRegistry>> moduleRegistry_;

FWCore/Framework/interface/StreamSchedule.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ namespace edm {
253253

254254
std::vector<Worker*> tryToPlaceConditionalModules(
255255
Worker*,
256+
ModuleRegistry& iRegistry,
256257
std::unordered_set<std::string>& conditionalModules,
257258
std::unordered_multimap<std::string, edm::ProductDescription const*> const& conditionalModuleBranches,
258259
std::unordered_multimap<std::string, AliasInfo> const& aliasMap,
@@ -261,6 +262,7 @@ namespace edm {
261262
PreallocationConfiguration const* prealloc,
262263
std::shared_ptr<ProcessConfiguration const> processConfiguration);
263264
PathWorkers fillWorkers(ParameterSet& proc_pset,
265+
ModuleRegistry& moduleRegistry,
264266
SignallingProductRegistryFiller& preg,
265267
PreallocationConfiguration const* prealloc,
266268
std::shared_ptr<ProcessConfiguration const> processConfiguration,
@@ -270,6 +272,7 @@ namespace edm {
270272
ConditionalTaskHelper const& conditionalTaskHelper,
271273
std::unordered_set<std::string>& allConditionalModules);
272274
void fillTrigPath(ParameterSet& proc_pset,
275+
ModuleRegistry& moduleRegistry,
273276
SignallingProductRegistryFiller& preg,
274277
PreallocationConfiguration const* prealloc,
275278
std::shared_ptr<ProcessConfiguration const> processConfiguration,
@@ -280,6 +283,7 @@ namespace edm {
280283
ConditionalTaskHelper const& conditionalTaskHelper,
281284
std::unordered_set<std::string>& allConditionalModules);
282285
void fillEndPath(ParameterSet& proc_pset,
286+
ModuleRegistry& moduleRegistry,
283287
SignallingProductRegistryFiller& preg,
284288
PreallocationConfiguration const* prealloc,
285289
std::shared_ptr<ProcessConfiguration const> processConfiguration,

FWCore/Framework/interface/maker/ModuleHolder.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ namespace edm {
5050
virtual std::unique_ptr<Worker> makeWorker(ExceptionToActionTable const* actions) const = 0;
5151

5252
virtual ModuleDescription const& moduleDescription() const = 0;
53+
virtual std::vector<ModuleConsumesInfo> moduleConsumesInfos() const = 0;
54+
virtual std::vector<ModuleConsumesMinimalESInfo> moduleConsumesMinimalESInfos() const = 0;
55+
5356
virtual void finishModuleInitialization(ModuleDescription const& iDesc,
5457
PreallocationConfiguration const& iPrealloc,
5558
SignallingProductRegistryFiller* iReg) = 0;
@@ -112,6 +115,8 @@ namespace edm {
112115
}
113116
};
114117
ModuleDescription const& moduleDescription() const final { return m_mod->moduleDescription(); }
118+
std::vector<ModuleConsumesInfo> moduleConsumesInfos() const final;
119+
std::vector<ModuleConsumesMinimalESInfo> moduleConsumesMinimalESInfos() const final;
115120

116121
void finishModuleInitialization(ModuleDescription const& iDesc,
117122
PreallocationConfiguration const& iPrealloc,

FWCore/Framework/interface/maker/Worker.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,6 @@ namespace edm {
206206

207207
void setEarlyDeleteHelper(EarlyDeleteHelper* iHelper);
208208

209-
virtual std::vector<ModuleConsumesInfo> moduleConsumesInfos() const = 0;
210-
virtual std::vector<ModuleConsumesMinimalESInfo> moduleConsumesMinimalESInfos() const = 0;
211-
212209
virtual Types moduleType() const = 0;
213210
virtual ConcurrencyTypes moduleConcurrencyType() const = 0;
214211

FWCore/Framework/interface/maker/WorkerT.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,6 @@ namespace edm {
110110
bool implDoEnd(LumiTransitionInfo const&, ModuleCallingContext const*) override;
111111
TaskQueueAdaptor serializeRunModule() override;
112112

113-
std::vector<ModuleConsumesInfo> moduleConsumesInfos() const override;
114-
std::vector<ModuleConsumesMinimalESInfo> moduleConsumesMinimalESInfos() const final {
115-
return module_->moduleConsumesMinimalESInfos();
116-
}
117-
118113
void itemsToGet(BranchType branchType, std::vector<ProductResolverIndexAndSkipBit>& indexes) const override {
119114
module_->itemsToGet(branchType, indexes);
120115
}

FWCore/Framework/src/ModuleHolderT.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,15 @@ namespace edm::maker {
235235
resolvePutIndiciesImpl(m_mod.get(), iBranchType, iIndicies, moduleDescription().moduleLabel());
236236
}
237237

238+
template <typename T>
239+
std::vector<ModuleConsumesInfo> ModuleHolderT<T>::moduleConsumesInfos() const {
240+
return m_mod->moduleConsumesInfos();
241+
}
242+
template <typename T>
243+
std::vector<ModuleConsumesMinimalESInfo> ModuleHolderT<T>::moduleConsumesMinimalESInfos() const {
244+
return m_mod->moduleConsumesMinimalESInfos();
245+
}
246+
238247
//Explicitly instantiate our needed templates to avoid having the compiler
239248
// instantiate them in all of our libraries
240249
template class ModuleHolderT<one::EDProducerBase>;

0 commit comments

Comments
 (0)