2323
2424// user include files
2525#include " FWCore/Framework/interface/maker/WorkerT.h"
26- #include " FWCore/Framework/interface/OutputModuleCommunicatorT.h"
2726#include " FWCore/Framework/interface/SignallingProductRegistryFiller.h"
27+ #include " FWCore/Framework/interface/OutputModuleCommunicator.h"
28+
29+ #include " FWCore/Utilities/interface/BranchType.h"
30+ #include " FWCore/Utilities/interface/ProductResolverIndex.h"
31+
32+ #include < unordered_map>
33+ #include < string>
2834// forward declarations
2935namespace edm {
3036 class ModuleDescription ;
3137 class SignallingProductRegistryFiller ;
3238 class ExceptionToActionTable ;
3339 class PreallocationConfiguration ;
40+ class ProductResolverIndexHelper ;
41+ class ProductResolverIndexAndSkipBit ;
42+ class ProductRegistry ;
43+ class ThinnedAssociationsHelper ;
3444
3545 namespace maker {
3646 class ModuleHolder {
@@ -46,6 +56,22 @@ namespace edm {
4656 virtual void replaceModuleFor (Worker*) const = 0;
4757
4858 virtual std::unique_ptr<OutputModuleCommunicator> createOutputModuleCommunicator () = 0;
59+
60+ void registerThinnedAssociations (ProductRegistry const & registry, ThinnedAssociationsHelper& helper);
61+ // Used to make EDGetToken work
62+ virtual void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &) = 0;
63+ virtual void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &) = 0;
64+ virtual void releaseMemoryPostLookupSignal () = 0;
65+ virtual void selectInputProcessBlocks (ProductRegistry const &, ProcessBlockHelperBase const &) = 0;
66+ virtual void resolvePutIndicies (
67+ BranchType iBranchType,
68+ std::unordered_multimap<std::string, std::tuple<TypeID const *, const char *, edm::ProductResolverIndex>> const &
69+ iIndicies) = 0;
70+ virtual void convertCurrentProcessAlias (std::string const & processName) = 0;
71+
72+ private:
73+ virtual void implRegisterThinnedAssociations (ProductRegistry const & registry,
74+ ThinnedAssociationsHelper& helper) = 0;
4975 };
5076
5177 template <typename T>
@@ -59,7 +85,7 @@ namespace edm {
5985 assert (nullptr != w);
6086 w->setModule (m_mod);
6187 }
62- std::unique_ptr<Worker> makeWorker (ExceptionToActionTable const * actions) const override {
88+ std::unique_ptr<Worker> makeWorker (ExceptionToActionTable const * actions) const final {
6389 return std::make_unique<edm::WorkerT<T>>(module (), moduleDescription (), actions);
6490 }
6591
@@ -73,18 +99,30 @@ namespace edm {
7399 iModule.registerProductsAndCallbacks (&iModule, iReg);
74100 }
75101 };
76- ModuleDescription const & moduleDescription () const override { return m_mod->moduleDescription (); }
102+ ModuleDescription const & moduleDescription () const final { return m_mod->moduleDescription (); }
77103
78104 void finishModuleInitialization (ModuleDescription const & iDesc,
79105 PreallocationConfiguration const & iPrealloc,
80106 SignallingProductRegistryFiller* iReg) override {
81107 finishModuleInitialization (*m_mod, iDesc, iPrealloc, iReg);
82108 }
83- std::unique_ptr<OutputModuleCommunicator> createOutputModuleCommunicator () override {
84- return OutputModuleCommunicatorT<T>::createIfNeeded (m_mod.get ());
109+ std::unique_ptr<OutputModuleCommunicator> createOutputModuleCommunicator () final ;
110+
111+ void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &) final ;
112+ void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &) final ;
113+ void releaseMemoryPostLookupSignal () final ;
114+ void selectInputProcessBlocks (ProductRegistry const &, ProcessBlockHelperBase const &) final ;
115+ void resolvePutIndicies (
116+ BranchType iBranchType,
117+ std::unordered_multimap<std::string, std::tuple<TypeID const *, const char *, edm::ProductResolverIndex>> const &
118+ iIndicies) final ;
119+ void convertCurrentProcessAlias (std::string const & processName) final {
120+ m_mod->convertCurrentProcessAlias (processName);
85121 }
86122
87123 private:
124+ void implRegisterThinnedAssociations (ProductRegistry const & registry, ThinnedAssociationsHelper& helper) final ;
125+
88126 std::shared_ptr<T> m_mod;
89127 };
90128 } // namespace maker
0 commit comments