22 #include <type_traits> 25 namespace workerimpl {
87 template <
typename...
T>
101 template <
typename T,
typename INFOTYPE>
108 template <
typename T,
typename INFOTYPE>
116 template <
typename T>
122 template <
typename T>
125 template <
typename T>
127 return module_->wantsProcessBlocks();
130 template <
typename T>
132 return module_->wantsInputProcessBlocks();
135 template <
typename T>
137 return module_->wantsGlobalRuns();
140 template <
typename T>
142 return module_->wantsGlobalLuminosityBlocks();
145 template <
typename T>
147 return module_->wantsStreamRuns();
150 template <
typename T>
152 return module_->wantsStreamLuminosityBlocks();
155 template <
typename T>
159 template <
typename T>
167 return module_->globalRunsQueue();
171 return module_->globalLuminosityBlocksQueue();
175 return module_->globalRunsQueue();
179 return module_->globalLuminosityBlocksQueue();
183 return module_->globalRunsQueue();
187 return module_->globalLuminosityBlocksQueue();
191 return module_->globalRunsQueue();
195 return module_->globalLuminosityBlocksQueue();
198 template <
typename T>
201 std::shared_ptr<Worker> sentry(
this, [&
ep](
Worker*
obj) {
obj->postDoEvent(
ep); });
202 return module_->doEvent(
info, activityRegistry(), mcc);
205 template <
typename T>
214 module_->doAcquire(
info, activityRegistry(), mcc, holder);
221 module_->doAcquire(
info, activityRegistry(), mcc, holder);
228 module_->doAcquire(
info, activityRegistry(), mcc, holder);
235 module_->doAcquire(
info, activityRegistry(), mcc, holder);
242 module_->doAcquire(
info, activityRegistry(), mcc, holder);
245 template <
typename T>
247 size_t iTransformIndex,
256 module_->doTransformAsync(iTask, iTransformIndex,
iEvent, activityRegistry(), mcc, weakToken);
266 size_t iTransformIndex,
272 size_t iTransformIndex,
278 size_t iTransformIndex,
284 size_t iTransformIndex,
290 size_t iTransformIndex,
296 size_t iTransformIndex,
302 size_t iTransformIndex,
307 template <
typename T>
313 return module_->transformIndex_(iBranch);
317 return module_->transformIndex_(iBranch);
321 return module_->transformIndex_(iBranch);
325 return module_->transformIndex_(iBranch);
329 return module_->transformIndex_(iBranch);
333 return module_->transformIndex_(iBranch);
337 return module_->transformIndex_(iBranch);
340 template <
typename T>
346 return module_->transformPrefetch_(iTransformIndex);
350 return module_->transformPrefetch_(iTransformIndex);
354 size_t iTransformIndex)
const {
355 return module_->transformPrefetch_(iTransformIndex);
359 return module_->transformPrefetch_(iTransformIndex);
363 return module_->transformPrefetch_(iTransformIndex);
367 return module_->transformPrefetch_(iTransformIndex);
371 return module_->transformPrefetch_(iTransformIndex);
374 template <
typename T>
379 template <
typename T>
385 template <
typename T>
397 return module_->prePrefetchSelection(
id,
ep, mcc);
401 std::vector<ProductResolverIndexAndSkipBit>& iItems)
const {
402 iItems =
module_->productsUsedBySelection();
413 return module_->prePrefetchSelection(
id,
ep, mcc);
417 std::vector<ProductResolverIndexAndSkipBit>& iItems)
const {
418 iItems =
module_->productsUsedBySelection();
429 return module_->prePrefetchSelection(
id,
ep, mcc);
433 std::vector<ProductResolverIndexAndSkipBit>& iItems)
const {
434 iItems =
module_->productsUsedBySelection();
437 template <
typename T>
439 module_->doBeginProcessBlock(pbp, mcc);
443 template <
typename T>
445 module_->doAccessInputProcessBlock(pbp, mcc);
449 template <
typename T>
451 module_->doEndProcessBlock(pbp, mcc);
455 template <
typename T>
461 template <
typename T>
462 template <
typename D>
470 template <
typename T>
471 template <
typename D>
476 template <
typename T>
484 might_call(
this,
id,
info, mcc);
488 template <
typename T>
494 might_call(
this,
id,
info, mcc);
498 template <
typename T>
504 template <
typename T>
510 template <
typename T>
511 template <
typename D>
516 module_->doStreamBeginLuminosityBlock(
id,
info, mcc);
519 template <
typename T>
520 template <
typename D>
522 module_->doStreamEndLuminosityBlock(
id,
info, mcc);
525 template <
typename T>
533 might_call(
this,
id,
info, mcc);
537 template <
typename T>
545 might_call(
this,
id,
info, mcc);
550 template <
typename T>
556 template <
typename T>
561 template <
typename T>
566 template <
typename T>
571 template <
typename T>
572 template <
typename D>
577 template <
typename T>
584 might_call(
this,
id);
587 template <
typename T>
588 template <
typename D>
593 template <
typename T>
600 might_call(
this,
id);
603 template <
typename T>
605 module_->doRespondToOpenInputFile(fb);
608 template <
typename T>
610 module_->doRespondToCloseInputFile(fb);
613 template <
typename T>
615 module_->doRespondToCloseOutputFile();
618 template <
typename T>
624 template <
typename T>
630 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
634 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
638 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
642 return &(
module_->sharedResourcesAcquirer().serialQueueChain());
662 template <
typename T>
663 bool mustPrefetchMayGet();
666 bool mustPrefetchMayGet<edm::one::EDProducerBase>() {
670 bool mustPrefetchMayGet<edm::one::EDFilterBase>() {
674 bool mustPrefetchMayGet<edm::one::EDAnalyzerBase>() {
678 bool mustPrefetchMayGet<edm::one::OutputModuleBase>() {
683 bool mustPrefetchMayGet<edm::global::EDProducerBase>() {
687 bool mustPrefetchMayGet<edm::global::EDFilterBase>() {
691 bool mustPrefetchMayGet<edm::global::EDAnalyzerBase>() {
695 bool mustPrefetchMayGet<edm::global::OutputModuleBase>() {
700 bool mustPrefetchMayGet<edm::limited::EDProducerBase>() {
704 bool mustPrefetchMayGet<edm::limited::EDFilterBase>() {
708 bool mustPrefetchMayGet<edm::limited::EDAnalyzerBase>() {
712 bool mustPrefetchMayGet<edm::limited::OutputModuleBase>() {
717 bool mustPrefetchMayGet<edm::stream::EDProducerAdaptorBase>() {
721 bool mustPrefetchMayGet<edm::stream::EDFilterAdaptorBase>() {
725 bool mustPrefetchMayGet<edm::stream::EDAnalyzerAdaptorBase>() {
731 template <
typename T>
733 module_->updateLookup(iBranchType, iHelper, mustPrefetchMayGet<T>());
736 template <
typename T>
741 template <
typename T>
744 module_->selectInputProcessBlocks(productRegistry, processBlockHelperBase);
748 using ModuleToResolverIndicies =
749 std::unordered_multimap<std::string, std::tuple<edm::TypeID const*, const char*, edm::ProductResolverIndex>>;
750 void resolvePutIndiciesImpl(
void*,
752 ModuleToResolverIndicies
const& iIndicies,
757 void resolvePutIndiciesImpl(ProducerBase* iProd,
759 ModuleToResolverIndicies
const& iIndicies,
761 iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
766 ModuleToResolverIndicies
const& iIndicies,
772 ModuleToResolverIndicies
const& iIndicies,
779 template <
typename T>
782 std::unordered_multimap<
std::string, std::tuple<TypeID const*, const char*, edm::ProductResolverIndex>>
const&
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &) final
static const char module_[]
void operator()(WorkerT< T > *iWorker, StreamID id, INFOTYPE const &info, ModuleCallingContext const *mcc)
bool implDoEndProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
SerialTaskQueue * globalRunsQueue() final
roAction_t actions[nactions]
unsigned int ProductResolverIndex
SerialTaskQueue * globalLuminosityBlocksQueue() final
void operator()(WorkerT< T > *iWorker, StreamID id, INFOTYPE const &info, ModuleCallingContext const *mcc)
void implEndJob() override
std::string workerType() const override
void callWorkerStreamEnd(D, StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
bool wantsStreamLuminosityBlocks() const final
bool implNeedToRunSelection() const final
bool implDoStreamEnd(StreamID, RunTransitionInfo const &, ModuleCallingContext const *) override
bool implDoPrePrefetchSelection(StreamID, EventPrincipal const &, ModuleCallingContext const *) override
bool implDoAccessInputProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
void callWorkerStreamBegin(D, StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
edm::propagate_const< std::shared_ptr< T > > module_
void itemsToGetForSelection(std::vector< ProductResolverIndexAndSkipBit > &) const final
size_t transformIndex(edm::BranchDescription const &) const final
void implRespondToOpenInputFile(FileBlock const &fb) override
void implRespondToCloseOutputFile() override
Types moduleType() const override
void doneWaiting(std::exception_ptr iExcept)
void callWorkerEndStream(D, StreamID)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void operator()(WorkerT< T > *iWorker, StreamID id)
void operator()(const T &...)
void implBeginStream(StreamID) override
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &iIndicies) final
bool implDoStreamBegin(StreamID, RunTransitionInfo const &, ModuleCallingContext const *) override
bool wantsInputProcessBlocks() const final
TaskQueueAdaptor serializeRunModule() override
ServiceToken lock() const
void operator()(WorkerT< T > *iWorker, StreamID id)
bool wantsGlobalLuminosityBlocks() const final
bool implDoBeginProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
DecomposeProduct< arg, typename Div::arg > D
void implEndStream(StreamID) override
void implDoTransformAsync(WaitingTaskHolder, size_t iTransformIndex, EventPrincipal const &, ParentContext const &, ServiceWeakToken const &) final
void implBeginJob() override
bool wantsProcessBlocks() const final
void implRespondToCloseInputFile(FileBlock const &fb) override
bool implDoEnd(RunTransitionInfo const &, ModuleCallingContext const *) override
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
void callWorkerBeginStream(D, StreamID)
void implDoAcquire(EventTransitionInfo const &, ModuleCallingContext const *, WaitingTaskWithArenaHolder &) final
ProductResolverIndex itemToGetForTransform(size_t iTransformIndex) const final
bool wantsGlobalRuns() const final
bool wantsStreamRuns() const final
void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &) override
bool implDoBegin(RunTransitionInfo const &, ModuleCallingContext const *) override
WorkerT(std::shared_ptr< T >, ModuleDescription const &, ExceptionToActionTable const *actions)
void selectInputProcessBlocks(ProductRegistry const &, ProcessBlockHelperBase const &) final
ConcurrencyTypes moduleConcurrencyType() const override
bool implDo(EventTransitionInfo const &, ModuleCallingContext const *) override