CMS 3D CMS Logo

WorkerT.cc
Go to the documentation of this file.
3 
12 
16 
21 
22 #include <type_traits>
23 
24 namespace edm {
25  namespace workerimpl {
26  template <typename T>
28  static bool constexpr value = false;
29  };
30 
31  template <>
33  static bool constexpr value = true;
34  };
35 
36  template <>
38  static bool constexpr value = true;
39  };
40 
41  template <>
43  static bool constexpr value = true;
44  };
45 
46  template <>
48  static bool constexpr value = true;
49  };
50 
51  template <>
53  static bool constexpr value = true;
54  };
55 
56  template <>
58  static bool constexpr value = true;
59  };
60 
61  template <>
63  static bool constexpr value = true;
64  };
65 
66  template <>
68  static bool constexpr value = true;
69  };
70 
71  template <>
73  static bool constexpr value = true;
74  };
75 
76  template <typename T>
78  static bool constexpr value = false;
79  };
80 
81  template <>
83  static bool constexpr value = true;
84  };
85 
86  struct DoNothing {
87  template <typename... T>
88  inline void operator()(const T&...) {}
89  };
90 
91  template <typename T>
92  struct DoBeginStream {
93  inline void operator()(WorkerT<T>* iWorker, StreamID id) { iWorker->callWorkerBeginStream(0, id); }
94  };
95 
96  template <typename T>
97  struct DoEndStream {
98  inline void operator()(WorkerT<T>* iWorker, StreamID id) { iWorker->callWorkerEndStream(0, id); }
99  };
100 
101  template <typename T, typename INFOTYPE>
103  inline void operator()(WorkerT<T>* iWorker, StreamID id, INFOTYPE const& info, ModuleCallingContext const* mcc) {
104  iWorker->callWorkerStreamBegin(0, id, info, mcc);
105  }
106  };
107 
108  template <typename T, typename INFOTYPE>
110  inline void operator()(WorkerT<T>* iWorker, StreamID id, INFOTYPE const& info, ModuleCallingContext const* mcc) {
111  iWorker->callWorkerStreamEnd(0, id, info, mcc);
112  }
113  };
114  } // namespace workerimpl
115 
116  template <typename T>
117  inline WorkerT<T>::WorkerT(std::shared_ptr<T> ed, ModuleDescription const& md, ExceptionToActionTable const* actions)
118  : Worker(md, actions), module_(ed) {
119  assert(module_ != nullptr);
120  }
121 
122  template <typename T>
124 
125  template <typename T>
127  return module_->wantsProcessBlocks();
128  }
129 
130  template <typename T>
132  return module_->wantsInputProcessBlocks();
133  }
134 
135  template <typename T>
137  return module_->wantsGlobalRuns();
138  }
139 
140  template <typename T>
142  return module_->wantsGlobalLuminosityBlocks();
143  }
144 
145  template <typename T>
147  return module_->wantsStreamRuns();
148  }
149 
150  template <typename T>
152  return module_->wantsStreamLuminosityBlocks();
153  }
154 
155  template <typename T>
157  return nullptr;
158  }
159  template <typename T>
161  return nullptr;
162  }
163 
164  //one
165  template <>
167  return module_->globalRunsQueue();
168  }
169  template <>
171  return module_->globalLuminosityBlocksQueue();
172  }
173  template <>
175  return module_->globalRunsQueue();
176  }
177  template <>
179  return module_->globalLuminosityBlocksQueue();
180  }
181  template <>
183  return module_->globalRunsQueue();
184  }
185  template <>
187  return module_->globalLuminosityBlocksQueue();
188  }
189  template <>
191  return module_->globalRunsQueue();
192  }
193  template <>
195  return module_->globalLuminosityBlocksQueue();
196  }
197 
198  template <typename T>
200  EventPrincipal const& ep = info.principal();
201  std::shared_ptr<Worker> sentry(this, [&ep](Worker* obj) { obj->postDoEvent(ep); });
202  return module_->doEvent(info, activityRegistry(), mcc);
203  }
204 
205  template <typename T>
207  ModuleCallingContext const*,
209 
210  template <>
212  ModuleCallingContext const* mcc,
213  WaitingTaskWithArenaHolder& holder) {
214  module_->doAcquire(info, activityRegistry(), mcc, holder);
215  }
216 
217  template <>
219  ModuleCallingContext const* mcc,
220  WaitingTaskWithArenaHolder& holder) {
221  module_->doAcquire(info, activityRegistry(), mcc, holder);
222  }
223 
224  template <>
226  ModuleCallingContext const* mcc,
227  WaitingTaskWithArenaHolder& holder) {
228  module_->doAcquire(info, activityRegistry(), mcc, holder);
229  }
230 
231  template <>
233  ModuleCallingContext const* mcc,
234  WaitingTaskWithArenaHolder& holder) {
235  module_->doAcquire(info, activityRegistry(), mcc, holder);
236  }
237 
238  template <>
240  ModuleCallingContext const* mcc,
241  WaitingTaskWithArenaHolder& holder) {
242  module_->doAcquire(info, activityRegistry(), mcc, holder);
243  }
244 
245  template <typename T>
247  size_t iTransformIndex,
248  EventPrincipal const& iEvent,
249  ParentContext const& iParent,
250  ServiceWeakToken const& weakToken) noexcept {
251  CMS_SA_ALLOW try {
252  ServiceRegistry::Operate guard(weakToken.lock());
253 
255  &module_->moduleDescription(), iTransformIndex + 1, ModuleCallingContext::State::kRunning, iParent, nullptr);
256  module_->doTransformAsync(iTask, iTransformIndex, iEvent, activityRegistry(), mcc, weakToken);
257  } catch (...) {
258  iTask.doneWaiting(std::current_exception());
259  return;
260  }
261  iTask.doneWaiting(std::exception_ptr());
262  }
263 
264  template <>
266  size_t iTransformIndex,
267  EventPrincipal const& iEvent,
268  ParentContext const& iParent,
269  ServiceWeakToken const& weakToken) noexcept {}
270  template <>
272  size_t iTransformIndex,
273  EventPrincipal const& iEvent,
274  ParentContext const& iParent,
275  ServiceWeakToken const& weakToken) noexcept {}
276  template <>
278  size_t iTransformIndex,
279  EventPrincipal const& iEvent,
280  ParentContext const& iParent,
281  ServiceWeakToken const& weakToken) noexcept {}
282  template <>
284  size_t iTransformIndex,
285  EventPrincipal const& iEvent,
286  ParentContext const& iParent,
287  ServiceWeakToken const& weakToken) noexcept {}
288  template <>
290  size_t iTransformIndex,
291  EventPrincipal const& iEvent,
292  ParentContext const& iParent,
293  ServiceWeakToken const& weakToken) noexcept {}
294  template <>
296  size_t iTransformIndex,
297  EventPrincipal const& iEvent,
298  ParentContext const& iParent,
299  ServiceWeakToken const& weakToken) noexcept {}
300  template <>
302  size_t iTransformIndex,
303  EventPrincipal const& iEvent,
304  ParentContext const& iParent,
305  ServiceWeakToken const& weakToken) noexcept {
306  }
307 
308  template <typename T>
309  inline size_t WorkerT<T>::transformIndex(edm::BranchDescription const&) const noexcept {
310  return -1;
311  }
312  template <>
313  inline size_t WorkerT<global::EDFilterBase>::transformIndex(edm::BranchDescription const& iBranch) const noexcept {
314  return module_->transformIndex_(iBranch);
315  }
316  template <>
317  inline size_t WorkerT<global::EDProducerBase>::transformIndex(edm::BranchDescription const& iBranch) const noexcept {
318  return module_->transformIndex_(iBranch);
319  }
320  template <>
322  edm::BranchDescription const& iBranch) const noexcept {
323  return module_->transformIndex_(iBranch);
324  }
325  template <>
326  inline size_t WorkerT<limited::EDFilterBase>::transformIndex(edm::BranchDescription const& iBranch) const noexcept {
327  return module_->transformIndex_(iBranch);
328  }
329  template <>
330  inline size_t WorkerT<limited::EDProducerBase>::transformIndex(edm::BranchDescription const& iBranch) const noexcept {
331  return module_->transformIndex_(iBranch);
332  }
333  template <>
334  inline size_t WorkerT<one::EDFilterBase>::transformIndex(edm::BranchDescription const& iBranch) const noexcept {
335  return module_->transformIndex_(iBranch);
336  }
337  template <>
338  inline size_t WorkerT<one::EDProducerBase>::transformIndex(edm::BranchDescription const& iBranch) const noexcept {
339  return module_->transformIndex_(iBranch);
340  }
341 
342  template <typename T>
343  inline ProductResolverIndex WorkerT<T>::itemToGetForTransform(size_t iTransformIndex) const noexcept {
344  return -1;
345  }
346  template <>
348  size_t iTransformIndex) const noexcept {
349  return module_->transformPrefetch_(iTransformIndex);
350  }
351  template <>
353  size_t iTransformIndex) const noexcept {
354  return module_->transformPrefetch_(iTransformIndex);
355  }
356  template <>
358  size_t iTransformIndex) const noexcept {
359  return module_->transformPrefetch_(iTransformIndex);
360  }
361  template <>
363  size_t iTransformIndex) const noexcept {
364  return module_->transformPrefetch_(iTransformIndex);
365  }
366  template <>
368  size_t iTransformIndex) const noexcept {
369  return module_->transformPrefetch_(iTransformIndex);
370  }
371  template <>
372  inline ProductResolverIndex WorkerT<one::EDFilterBase>::itemToGetForTransform(size_t iTransformIndex) const noexcept {
373  return module_->transformPrefetch_(iTransformIndex);
374  }
375  template <>
377  size_t iTransformIndex) const noexcept {
378  return module_->transformPrefetch_(iTransformIndex);
379  }
380 
381  template <typename T>
382  inline bool WorkerT<T>::implNeedToRunSelection() const noexcept {
383  return false;
384  }
385 
386  template <typename T>
388  EventPrincipal const& ep,
389  ModuleCallingContext const* mcc) {
390  return true;
391  }
392  template <typename T>
393  inline void WorkerT<T>::itemsToGetForSelection(std::vector<ProductResolverIndexAndSkipBit>&) const {}
394 
395  template <>
397  return true;
398  }
399 
400  template <>
402  EventPrincipal const& ep,
403  ModuleCallingContext const* mcc) {
404  return module_->prePrefetchSelection(id, ep, mcc);
405  }
406  template <>
408  std::vector<ProductResolverIndexAndSkipBit>& iItems) const {
409  iItems = module_->productsUsedBySelection();
410  }
411 
412  template <>
414  return true;
415  }
416  template <>
418  EventPrincipal const& ep,
419  ModuleCallingContext const* mcc) {
420  return module_->prePrefetchSelection(id, ep, mcc);
421  }
422  template <>
424  std::vector<ProductResolverIndexAndSkipBit>& iItems) const {
425  iItems = module_->productsUsedBySelection();
426  }
427 
428  template <>
430  return true;
431  }
432  template <>
434  EventPrincipal const& ep,
435  ModuleCallingContext const* mcc) {
436  return module_->prePrefetchSelection(id, ep, mcc);
437  }
438  template <>
440  std::vector<ProductResolverIndexAndSkipBit>& iItems) const {
441  iItems = module_->productsUsedBySelection();
442  }
443 
444  template <typename T>
446  module_->doBeginProcessBlock(pbp, mcc);
447  return true;
448  }
449 
450  template <typename T>
452  module_->doAccessInputProcessBlock(pbp, mcc);
453  return true;
454  }
455 
456  template <typename T>
458  module_->doEndProcessBlock(pbp, mcc);
459  return true;
460  }
461 
462  template <typename T>
464  module_->doBeginRun(info, mcc);
465  return true;
466  }
467 
468  template <typename T>
469  template <typename D>
471  StreamID id,
472  RunTransitionInfo const& info,
473  ModuleCallingContext const* mcc) {
474  module_->doStreamBeginRun(id, info, mcc);
475  }
476 
477  template <typename T>
478  template <typename D>
480  module_->doStreamEndRun(id, info, mcc);
481  }
482 
483  template <typename T>
485  RunTransitionInfo const& info,
486  ModuleCallingContext const* mcc) {
490  might_call;
491  might_call(this, id, info, mcc);
492  return true;
493  }
494 
495  template <typename T>
500  might_call;
501  might_call(this, id, info, mcc);
502  return true;
503  }
504 
505  template <typename T>
507  module_->doEndRun(info, mcc);
508  return true;
509  }
510 
511  template <typename T>
513  module_->doBeginLuminosityBlock(info, mcc);
514  return true;
515  }
516 
517  template <typename T>
518  template <typename D>
520  StreamID id,
521  LumiTransitionInfo const& info,
522  ModuleCallingContext const* mcc) {
523  module_->doStreamBeginLuminosityBlock(id, info, mcc);
524  }
525 
526  template <typename T>
527  template <typename D>
529  module_->doStreamEndLuminosityBlock(id, info, mcc);
530  }
531 
532  template <typename T>
534  LumiTransitionInfo const& info,
535  ModuleCallingContext const* mcc) {
539  might_call;
540  might_call(this, id, info, mcc);
541  return true;
542  }
543 
544  template <typename T>
546  LumiTransitionInfo const& info,
547  ModuleCallingContext const* mcc) {
551  might_call;
552  might_call(this, id, info, mcc);
553 
554  return true;
555  }
556 
557  template <typename T>
559  module_->doEndLuminosityBlock(info, mcc);
560  return true;
561  }
562 
563  template <typename T>
565  return module_->workerType();
566  }
567 
568  template <typename T>
569  inline void WorkerT<T>::implBeginJob() {
570  module_->doBeginJob();
571  }
572 
573  template <typename T>
574  inline void WorkerT<T>::implEndJob() {
575  module_->doEndJob();
576  }
577 
578  template <typename T>
579  template <typename D>
581  module_->doBeginStream(id);
582  }
583 
584  template <typename T>
590  might_call;
591  might_call(this, id);
592  }
593 
594  template <typename T>
595  template <typename D>
597  module_->doEndStream(id);
598  }
599 
600  template <typename T>
606  might_call;
607  might_call(this, id);
608  }
609 
610  template <typename T>
612  module_->doRespondToOpenInputFile(fb);
613  }
614 
615  template <typename T>
617  module_->doRespondToCloseInputFile(fb);
618  }
619 
620  template <typename T>
622  module_->doRespondToCloseOutputFile();
623  }
624 
625  template <typename T>
628  module_->doRegisterThinnedAssociations(registry, helper);
629  }
630 
631  template <typename T>
633  return Worker::TaskQueueAdaptor{};
634  }
635  template <>
637  return &(module_->sharedResourcesAcquirer().serialQueueChain());
638  }
639  template <>
641  return &(module_->sharedResourcesAcquirer().serialQueueChain());
642  }
643  template <>
645  return &(module_->sharedResourcesAcquirer().serialQueueChain());
646  }
647  template <>
649  return &(module_->sharedResourcesAcquirer().serialQueueChain());
650  }
651  template <>
653  return &(module_->queue());
654  }
655  template <>
657  return &(module_->queue());
658  }
659  template <>
661  return &(module_->queue());
662  }
663  template <>
665  return &(module_->queue());
666  }
667 
668  namespace {
669  template <typename T>
670  bool mustPrefetchMayGet();
671 
672  template <>
673  bool mustPrefetchMayGet<edm::one::EDProducerBase>() {
674  return true;
675  }
676  template <>
677  bool mustPrefetchMayGet<edm::one::EDFilterBase>() {
678  return true;
679  }
680  template <>
681  bool mustPrefetchMayGet<edm::one::EDAnalyzerBase>() {
682  return true;
683  }
684  template <>
685  bool mustPrefetchMayGet<edm::one::OutputModuleBase>() {
686  return true;
687  }
688 
689  template <>
690  bool mustPrefetchMayGet<edm::global::EDProducerBase>() {
691  return true;
692  }
693  template <>
694  bool mustPrefetchMayGet<edm::global::EDFilterBase>() {
695  return true;
696  }
697  template <>
698  bool mustPrefetchMayGet<edm::global::EDAnalyzerBase>() {
699  return true;
700  }
701  template <>
702  bool mustPrefetchMayGet<edm::global::OutputModuleBase>() {
703  return true;
704  }
705 
706  template <>
707  bool mustPrefetchMayGet<edm::limited::EDProducerBase>() {
708  return true;
709  }
710  template <>
711  bool mustPrefetchMayGet<edm::limited::EDFilterBase>() {
712  return true;
713  }
714  template <>
715  bool mustPrefetchMayGet<edm::limited::EDAnalyzerBase>() {
716  return true;
717  }
718  template <>
719  bool mustPrefetchMayGet<edm::limited::OutputModuleBase>() {
720  return true;
721  }
722 
723  template <>
724  bool mustPrefetchMayGet<edm::stream::EDProducerAdaptorBase>() {
725  return true;
726  }
727  template <>
728  bool mustPrefetchMayGet<edm::stream::EDFilterAdaptorBase>() {
729  return true;
730  }
731  template <>
732  bool mustPrefetchMayGet<edm::stream::EDAnalyzerAdaptorBase>() {
733  return true;
734  }
735 
736  } // namespace
737 
738  template <typename T>
740  module_->updateLookup(iBranchType, iHelper, mustPrefetchMayGet<T>());
741  }
742 
743  template <typename T>
745  module_->updateLookup(iPI);
746  }
747 
748  template <typename T>
750  ProcessBlockHelperBase const& processBlockHelperBase) {
751  module_->selectInputProcessBlocks(productRegistry, processBlockHelperBase);
752  }
753 
754  namespace {
755  using ModuleToResolverIndicies =
756  std::unordered_multimap<std::string, std::tuple<edm::TypeID const*, const char*, edm::ProductResolverIndex>>;
757  void resolvePutIndiciesImpl(void*,
758  BranchType iBranchType,
759  ModuleToResolverIndicies const& iIndicies,
760  std::string const& iModuleLabel) {
761  //Do nothing
762  }
763 
764  void resolvePutIndiciesImpl(ProducerBase* iProd,
765  BranchType iBranchType,
766  ModuleToResolverIndicies const& iIndicies,
767  std::string const& iModuleLabel) {
768  iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
769  }
770 
771  void resolvePutIndiciesImpl(edm::stream::EDProducerAdaptorBase* iProd,
772  BranchType iBranchType,
773  ModuleToResolverIndicies const& iIndicies,
774  std::string const& iModuleLabel) {
775  iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
776  }
777  void resolvePutIndiciesImpl(edm::stream::EDFilterAdaptorBase* iProd,
778  BranchType iBranchType,
779  ModuleToResolverIndicies const& iIndicies,
780  std::string const& iModuleLabel) {
781  iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
782  }
783 
784  } // namespace
785 
786  template <typename T>
788  BranchType iBranchType,
789  std::unordered_multimap<std::string, std::tuple<TypeID const*, const char*, edm::ProductResolverIndex>> const&
790  iIndicies) {
791  resolvePutIndiciesImpl(&module(), iBranchType, iIndicies, description()->moduleLabel());
792  }
793 
794  template <>
796  return Worker::kProducer;
797  }
798  template <>
800  return Worker::kFilter;
801  }
802  template <>
804  return Worker::kAnalyzer;
805  }
806  template <>
808  return Worker::kOutputModule;
809  }
810 
811  template <>
813  return Worker::kProducer;
814  }
815  template <>
817  return Worker::kFilter;
818  }
819  template <>
821  return Worker::kAnalyzer;
822  }
823  template <>
825  return Worker::kOutputModule;
826  }
827 
828  template <>
830  return Worker::kProducer;
831  }
832  template <>
834  return Worker::kFilter;
835  }
836  template <>
838  return Worker::kAnalyzer;
839  }
840  template <>
842  return Worker::kOutputModule;
843  }
844 
845  template <>
847  return Worker::kProducer;
848  }
849  template <>
851  return Worker::kFilter;
852  }
853  template <>
855  return Worker::kAnalyzer;
856  }
857 
858  template <>
860  return Worker::kOne;
861  }
862  template <>
864  return Worker::kOne;
865  }
866  template <>
868  return Worker::kOne;
869  }
870  template <>
872  return Worker::kOne;
873  }
874 
875  template <>
877  return Worker::kGlobal;
878  }
879  template <>
881  return Worker::kGlobal;
882  }
883  template <>
885  return Worker::kGlobal;
886  }
887  template <>
889  return Worker::kGlobal;
890  }
891 
892  template <>
894  return Worker::kLimited;
895  }
896  template <>
898  return Worker::kLimited;
899  }
900  template <>
902  return Worker::kLimited;
903  }
904  template <>
906  return Worker::kLimited;
907  }
908 
909  template <>
911  return Worker::kStream;
912  }
913  template <>
915  return Worker::kStream;
916  }
917  template <>
919  return Worker::kStream;
920  }
921 
922  //Explicitly instantiate our needed templates to avoid having the compiler
923  // instantiate them in all of our libraries
924  template class WorkerT<one::EDProducerBase>;
925  template class WorkerT<one::EDFilterBase>;
926  template class WorkerT<one::EDAnalyzerBase>;
927  template class WorkerT<one::OutputModuleBase>;
928  template class WorkerT<global::EDProducerBase>;
929  template class WorkerT<global::EDFilterBase>;
930  template class WorkerT<global::EDAnalyzerBase>;
931  template class WorkerT<global::OutputModuleBase>;
935  template class WorkerT<limited::EDProducerBase>;
936  template class WorkerT<limited::EDFilterBase>;
937  template class WorkerT<limited::EDAnalyzerBase>;
938  template class WorkerT<limited::OutputModuleBase>;
939 } // namespace edm
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &) final
Definition: WorkerT.cc:739
static const char module_[]
void operator()(WorkerT< T > *iWorker, StreamID id, INFOTYPE const &info, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:110
bool wantsGlobalLuminosityBlocks() const noexcept final
Definition: WorkerT.cc:141
static const TGPicture * info(bool iBackgroundIsBlack)
#define CMS_SA_ALLOW
bool implDoEndProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:457
SerialTaskQueue * globalRunsQueue() final
Definition: WorkerT.cc:156
Definition: helper.py:1
roAction_t actions[nactions]
Definition: GenABIO.cc:181
void implDoTransformAsync(WaitingTaskHolder, size_t iTransformIndex, EventPrincipal const &, ParentContext const &, ServiceWeakToken const &) noexcept final
Definition: WorkerT.cc:246
unsigned int ProductResolverIndex
SerialTaskQueue * globalLuminosityBlocksQueue() final
Definition: WorkerT.cc:160
void operator()(WorkerT< T > *iWorker, StreamID id, INFOTYPE const &info, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:103
void implEndJob() override
Definition: WorkerT.cc:574
std::string workerType() const override
Definition: WorkerT.cc:564
void callWorkerStreamEnd(D, StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
Definition: WorkerT.cc:479
bool implDoStreamEnd(StreamID, RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:496
bool implDoPrePrefetchSelection(StreamID, EventPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:387
ProductResolverIndex itemToGetForTransform(size_t iTransformIndex) const noexcept final
Definition: WorkerT.cc:343
assert(be >=bs)
bool implDoAccessInputProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:451
BranchType
Definition: BranchType.h:11
void callWorkerStreamBegin(D, StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
Definition: WorkerT.cc:470
edm::propagate_const< std::shared_ptr< T > > module_
Definition: WorkerT.h:170
void itemsToGetForSelection(std::vector< ProductResolverIndexAndSkipBit > &) const final
Definition: WorkerT.cc:393
void implRespondToOpenInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:611
void implRespondToCloseOutputFile() override
Definition: WorkerT.cc:621
Types moduleType() const override
int iEvent
Definition: GenABIO.cc:224
void callWorkerEndStream(D, StreamID)
Definition: WorkerT.cc:596
bool wantsGlobalRuns() const noexcept final
Definition: WorkerT.cc:136
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
Definition: Activities.doc:12
void operator()(WorkerT< T > *iWorker, StreamID id)
Definition: WorkerT.cc:93
void operator()(const T &...)
Definition: WorkerT.cc:88
void implBeginStream(StreamID) override
Definition: WorkerT.cc:585
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &iIndicies) final
Definition: WorkerT.cc:787
bool implDoStreamBegin(StreamID, RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:484
bool implNeedToRunSelection() const noexcept final
Definition: WorkerT.cc:382
Definition: value.py:1
bool wantsStreamRuns() const noexcept final
Definition: WorkerT.cc:146
TaskQueueAdaptor serializeRunModule() override
Definition: WorkerT.cc:632
void operator()(WorkerT< T > *iWorker, StreamID id)
Definition: WorkerT.cc:98
ConcurrencyTypes
Definition: Worker.h:95
~WorkerT() override
Definition: WorkerT.cc:123
bool implDoBeginProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:445
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:141
void implEndStream(StreamID) override
Definition: WorkerT.cc:601
void implBeginJob() override
Definition: WorkerT.cc:569
void implRespondToCloseInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:616
bool implDoEnd(RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:506
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
void callWorkerBeginStream(D, StreamID)
Definition: WorkerT.cc:580
bool wantsProcessBlocks() const noexcept final
Definition: WorkerT.cc:126
size_t transformIndex(edm::BranchDescription const &) const noexcept final
Definition: WorkerT.cc:309
void implDoAcquire(EventTransitionInfo const &, ModuleCallingContext const *, WaitingTaskWithArenaHolder &) final
Definition: WorkerT.cc:206
HLT enums.
void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &) override
Definition: WorkerT.cc:626
bool implDoBegin(RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:463
bool wantsInputProcessBlocks() const noexcept final
Definition: WorkerT.cc:131
long double T
WorkerT(std::shared_ptr< T >, ModuleDescription const &, ExceptionToActionTable const *actions)
Definition: WorkerT.cc:117
void selectInputProcessBlocks(ProductRegistry const &, ProcessBlockHelperBase const &) final
Definition: WorkerT.cc:749
bool wantsStreamLuminosityBlocks() const noexcept final
Definition: WorkerT.cc:151
ConcurrencyTypes moduleConcurrencyType() const override
bool implDo(EventTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:199