21 #include <type_traits> 24 namespace workerimpl {
61 template<
typename...
T>
79 template<
typename T,
typename P>
88 template<
typename T,
typename P>
133 return module_->prePrefetchSelection(
id,ep,mcc);
142 return module_->prePrefetchSelection(
id,ep,mcc);
151 return module_->prePrefetchSelection(
id,ep,mcc);
158 module_->doBeginRun(rp, c, mcc);
168 module_->doStreamBeginRun(
id, rp, c, mcc);
177 module_->doStreamEndRun(
id, rp, c, mcc);
189 might_call(
this,
id,rp,c, mcc);
201 might_call(
this,
id,rp,c, mcc);
219 module_->doBeginLuminosityBlock(lbp, c, mcc);
229 module_->doStreamBeginLuminosityBlock(
id, rp, c, mcc);
238 module_->doStreamEndLuminosityBlock(
id, rp, c, mcc);
250 might_call(
this,
id,lbp,c, mcc);
262 might_call(
this,
id,lbp,c,mcc);
272 module_->doEndLuminosityBlock(lbp, c, mcc);
333 module_->doRespondToOpenInputFile(fb);
340 module_->doRespondToCloseInputFile(fb);
347 module_->doPreForkReleaseResources();
354 unsigned int iNumberOfChildren) {
355 module_->doPostForkReacquireResources(iChildIndex, iNumberOfChildren);
364 module_->doRegisterThinnedAssociations(registry, helper);
373 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
376 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
379 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
382 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
385 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
388 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
391 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
394 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
399 template <
typename T>
bool mustPrefetchMayGet();
401 template<>
bool mustPrefetchMayGet<EDAnalyzer>() {
return true;}
402 template<>
bool mustPrefetchMayGet<EDProducer>() {
return true;}
403 template<>
bool mustPrefetchMayGet<EDFilter>() {
return true;}
404 template<>
bool mustPrefetchMayGet<OutputModule>() {
return true;}
406 template<>
bool mustPrefetchMayGet<edm::one::EDProducerBase>() {
return true;}
407 template<>
bool mustPrefetchMayGet<edm::one::EDFilterBase>() {
return true;}
408 template<>
bool mustPrefetchMayGet<edm::one::EDAnalyzerBase>() {
return true;}
409 template<>
bool mustPrefetchMayGet<edm::one::OutputModuleBase>() {
return true;}
411 template<>
bool mustPrefetchMayGet<edm::global::EDProducerBase>() {
return true;}
412 template<>
bool mustPrefetchMayGet<edm::global::EDFilterBase>() {
return true;}
413 template<>
bool mustPrefetchMayGet<edm::global::EDAnalyzerBase>() {
return true;}
414 template<>
bool mustPrefetchMayGet<edm::global::OutputModuleBase>() {
return true;}
416 template<>
bool mustPrefetchMayGet<edm::stream::EDProducerAdaptorBase>() {
return true;}
417 template<>
bool mustPrefetchMayGet<edm::stream::EDFilterAdaptorBase>() {
return true;}
418 template<>
bool mustPrefetchMayGet<edm::stream::EDAnalyzerAdaptorBase>() {
return true;}
426 module_->updateLookup(iBranchType,iHelper,mustPrefetchMayGet<T>());
430 void resolvePutIndiciesImpl(
void*,
432 std::unordered_multimap<std::string, edm::ProductResolverIndex>
const& iIndicies,
439 std::unordered_multimap<std::string, edm::ProductResolverIndex>
const& iIndicies,
446 std::unordered_multimap<std::string, edm::ProductResolverIndex>
const& iIndicies,
452 std::unordered_multimap<std::string, edm::ProductResolverIndex>
const& iIndicies,
457 std::vector<ProductResolverIndex> s_emptyIndexList;
459 std::vector<ProductResolverIndex>
const& itemsShouldPutInEventImpl(
void const*) {
460 return s_emptyIndexList;
463 std::vector<ProductResolverIndex>
const& itemsShouldPutInEventImpl(
ProducerBase const* iProd) {
479 std::unordered_multimap<std::string, edm::ProductResolverIndex>
const& iIndicies) {
480 resolvePutIndiciesImpl(&
module(), iBranchType,iIndicies,
description().moduleLabel());
485 std::vector<ProductResolverIndex>
const&
487 return itemsShouldPutInEventImpl(&
module());
virtual bool implDoStreamEnd(StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
static const char module_[]
ModuleDescription const & description() const
roAction_t actions[nactions]
void callWorkerStreamEnd(D, StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc)
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
virtual void implEndJob() override
virtual void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &) override
virtual bool implDoStreamBegin(StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
ActivityRegistry * activityRegistry()
virtual bool implDo(EventPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *mcc) override
edm::propagate_const< std::shared_ptr< T > > module_
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts(BranchType iBranchType) const
virtual void implRespondToOpenInputFile(FileBlock const &fb) override
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts(BranchType iBranchType) const
virtual bool implDoPrePrefetchSelection(StreamID id, EventPrincipal const &ep, ModuleCallingContext const *mcc) override
virtual SerialTaskQueueChain * serializeRunModule() override
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
void callWorkerEndStream(D, StreamID)
void operator()(WorkerT< T > *iWorker, StreamID id)
void operator()(const T &...)
virtual void implBeginStream(StreamID) override
void operator()(WorkerT< T > *iWorker, StreamID id)
void callWorkerStreamBegin(D, StreamID id, RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc)
virtual bool implDoBegin(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
virtual std::vector< ProductResolverIndex > const & itemsShouldPutInEvent() const override
DecomposeProduct< arg, typename Div::arg > D
virtual void implEndStream(StreamID) override
virtual void implBeginJob() override
virtual void implPreForkReleaseResources() override
virtual void implRespondToCloseInputFile(FileBlock const &fb) override
std::pair< OmniClusterRef, TrackingParticleRef > P
void callWorkerBeginStream(D, StreamID)
void postDoEvent(EventPrincipal const &)
virtual void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &) override
virtual bool implDoEnd(RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *mcc) override
virtual std::string workerType() const override
virtual void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies) override
WorkerT(std::shared_ptr< T >, ModuleDescription const &, ExceptionToActionTable const *actions)
virtual void implPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren) override
virtual Types moduleType() const override