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) {
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) {}
270  template <>
272  size_t iTransformIndex,
273  EventPrincipal const& iEvent,
274  ParentContext const& iParent,
275  ServiceWeakToken const& weakToken) {}
276  template <>
278  size_t iTransformIndex,
279  EventPrincipal const& iEvent,
280  ParentContext const& iParent,
281  ServiceWeakToken const& weakToken) {}
282  template <>
284  size_t iTransformIndex,
285  EventPrincipal const& iEvent,
286  ParentContext const& iParent,
287  ServiceWeakToken const& weakToken) {}
288  template <>
290  size_t iTransformIndex,
291  EventPrincipal const& iEvent,
292  ParentContext const& iParent,
293  ServiceWeakToken const& weakToken) {}
294  template <>
296  size_t iTransformIndex,
297  EventPrincipal const& iEvent,
298  ParentContext const& iParent,
299  ServiceWeakToken const& weakToken) {}
300  template <>
302  size_t iTransformIndex,
303  EventPrincipal const& iEvent,
304  ParentContext const& iParent,
305  ServiceWeakToken const& weakToken) {}
306 
307  template <typename T>
309  return -1;
310  }
311  template <>
313  return module_->transformIndex_(iBranch);
314  }
315  template <>
317  return module_->transformIndex_(iBranch);
318  }
319  template <>
321  return module_->transformIndex_(iBranch);
322  }
323  template <>
325  return module_->transformIndex_(iBranch);
326  }
327  template <>
329  return module_->transformIndex_(iBranch);
330  }
331  template <>
333  return module_->transformIndex_(iBranch);
334  }
335  template <>
337  return module_->transformIndex_(iBranch);
338  }
339 
340  template <typename T>
341  inline ProductResolverIndex WorkerT<T>::itemToGetForTransform(size_t iTransformIndex) const {
342  return -1;
343  }
344  template <>
346  return module_->transformPrefetch_(iTransformIndex);
347  }
348  template <>
350  return module_->transformPrefetch_(iTransformIndex);
351  }
352  template <>
354  size_t iTransformIndex) const {
355  return module_->transformPrefetch_(iTransformIndex);
356  }
357  template <>
359  return module_->transformPrefetch_(iTransformIndex);
360  }
361  template <>
363  return module_->transformPrefetch_(iTransformIndex);
364  }
365  template <>
367  return module_->transformPrefetch_(iTransformIndex);
368  }
369  template <>
371  return module_->transformPrefetch_(iTransformIndex);
372  }
373 
374  template <typename T>
376  return false;
377  }
378 
379  template <typename T>
381  EventPrincipal const& ep,
382  ModuleCallingContext const* mcc) {
383  return true;
384  }
385  template <typename T>
386  inline void WorkerT<T>::itemsToGetForSelection(std::vector<ProductResolverIndexAndSkipBit>&) const {}
387 
388  template <>
390  return true;
391  }
392 
393  template <>
395  EventPrincipal const& ep,
396  ModuleCallingContext const* mcc) {
397  return module_->prePrefetchSelection(id, ep, mcc);
398  }
399  template <>
401  std::vector<ProductResolverIndexAndSkipBit>& iItems) const {
402  iItems = module_->productsUsedBySelection();
403  }
404 
405  template <>
407  return true;
408  }
409  template <>
411  EventPrincipal const& ep,
412  ModuleCallingContext const* mcc) {
413  return module_->prePrefetchSelection(id, ep, mcc);
414  }
415  template <>
417  std::vector<ProductResolverIndexAndSkipBit>& iItems) const {
418  iItems = module_->productsUsedBySelection();
419  }
420 
421  template <>
423  return true;
424  }
425  template <>
427  EventPrincipal const& ep,
428  ModuleCallingContext const* mcc) {
429  return module_->prePrefetchSelection(id, ep, mcc);
430  }
431  template <>
433  std::vector<ProductResolverIndexAndSkipBit>& iItems) const {
434  iItems = module_->productsUsedBySelection();
435  }
436 
437  template <typename T>
439  module_->doBeginProcessBlock(pbp, mcc);
440  return true;
441  }
442 
443  template <typename T>
445  module_->doAccessInputProcessBlock(pbp, mcc);
446  return true;
447  }
448 
449  template <typename T>
451  module_->doEndProcessBlock(pbp, mcc);
452  return true;
453  }
454 
455  template <typename T>
457  module_->doBeginRun(info, mcc);
458  return true;
459  }
460 
461  template <typename T>
462  template <typename D>
464  StreamID id,
465  RunTransitionInfo const& info,
466  ModuleCallingContext const* mcc) {
467  module_->doStreamBeginRun(id, info, mcc);
468  }
469 
470  template <typename T>
471  template <typename D>
473  module_->doStreamEndRun(id, info, mcc);
474  }
475 
476  template <typename T>
478  RunTransitionInfo const& info,
479  ModuleCallingContext const* mcc) {
483  might_call;
484  might_call(this, id, info, mcc);
485  return true;
486  }
487 
488  template <typename T>
493  might_call;
494  might_call(this, id, info, mcc);
495  return true;
496  }
497 
498  template <typename T>
500  module_->doEndRun(info, mcc);
501  return true;
502  }
503 
504  template <typename T>
506  module_->doBeginLuminosityBlock(info, mcc);
507  return true;
508  }
509 
510  template <typename T>
511  template <typename D>
513  StreamID id,
514  LumiTransitionInfo const& info,
515  ModuleCallingContext const* mcc) {
516  module_->doStreamBeginLuminosityBlock(id, info, mcc);
517  }
518 
519  template <typename T>
520  template <typename D>
522  module_->doStreamEndLuminosityBlock(id, info, mcc);
523  }
524 
525  template <typename T>
527  LumiTransitionInfo const& info,
528  ModuleCallingContext const* mcc) {
532  might_call;
533  might_call(this, id, info, mcc);
534  return true;
535  }
536 
537  template <typename T>
539  LumiTransitionInfo const& info,
540  ModuleCallingContext const* mcc) {
544  might_call;
545  might_call(this, id, info, mcc);
546 
547  return true;
548  }
549 
550  template <typename T>
552  module_->doEndLuminosityBlock(info, mcc);
553  return true;
554  }
555 
556  template <typename T>
558  return module_->workerType();
559  }
560 
561  template <typename T>
562  inline void WorkerT<T>::implBeginJob() {
563  module_->doBeginJob();
564  }
565 
566  template <typename T>
567  inline void WorkerT<T>::implEndJob() {
568  module_->doEndJob();
569  }
570 
571  template <typename T>
572  template <typename D>
574  module_->doBeginStream(id);
575  }
576 
577  template <typename T>
583  might_call;
584  might_call(this, id);
585  }
586 
587  template <typename T>
588  template <typename D>
590  module_->doEndStream(id);
591  }
592 
593  template <typename T>
599  might_call;
600  might_call(this, id);
601  }
602 
603  template <typename T>
605  module_->doRespondToOpenInputFile(fb);
606  }
607 
608  template <typename T>
610  module_->doRespondToCloseInputFile(fb);
611  }
612 
613  template <typename T>
615  module_->doRespondToCloseOutputFile();
616  }
617 
618  template <typename T>
621  module_->doRegisterThinnedAssociations(registry, helper);
622  }
623 
624  template <typename T>
626  return Worker::TaskQueueAdaptor{};
627  }
628  template <>
630  return &(module_->sharedResourcesAcquirer().serialQueueChain());
631  }
632  template <>
634  return &(module_->sharedResourcesAcquirer().serialQueueChain());
635  }
636  template <>
638  return &(module_->sharedResourcesAcquirer().serialQueueChain());
639  }
640  template <>
642  return &(module_->sharedResourcesAcquirer().serialQueueChain());
643  }
644  template <>
646  return &(module_->queue());
647  }
648  template <>
650  return &(module_->queue());
651  }
652  template <>
654  return &(module_->queue());
655  }
656  template <>
658  return &(module_->queue());
659  }
660 
661  namespace {
662  template <typename T>
663  bool mustPrefetchMayGet();
664 
665  template <>
666  bool mustPrefetchMayGet<edm::one::EDProducerBase>() {
667  return true;
668  }
669  template <>
670  bool mustPrefetchMayGet<edm::one::EDFilterBase>() {
671  return true;
672  }
673  template <>
674  bool mustPrefetchMayGet<edm::one::EDAnalyzerBase>() {
675  return true;
676  }
677  template <>
678  bool mustPrefetchMayGet<edm::one::OutputModuleBase>() {
679  return true;
680  }
681 
682  template <>
683  bool mustPrefetchMayGet<edm::global::EDProducerBase>() {
684  return true;
685  }
686  template <>
687  bool mustPrefetchMayGet<edm::global::EDFilterBase>() {
688  return true;
689  }
690  template <>
691  bool mustPrefetchMayGet<edm::global::EDAnalyzerBase>() {
692  return true;
693  }
694  template <>
695  bool mustPrefetchMayGet<edm::global::OutputModuleBase>() {
696  return true;
697  }
698 
699  template <>
700  bool mustPrefetchMayGet<edm::limited::EDProducerBase>() {
701  return true;
702  }
703  template <>
704  bool mustPrefetchMayGet<edm::limited::EDFilterBase>() {
705  return true;
706  }
707  template <>
708  bool mustPrefetchMayGet<edm::limited::EDAnalyzerBase>() {
709  return true;
710  }
711  template <>
712  bool mustPrefetchMayGet<edm::limited::OutputModuleBase>() {
713  return true;
714  }
715 
716  template <>
717  bool mustPrefetchMayGet<edm::stream::EDProducerAdaptorBase>() {
718  return true;
719  }
720  template <>
721  bool mustPrefetchMayGet<edm::stream::EDFilterAdaptorBase>() {
722  return true;
723  }
724  template <>
725  bool mustPrefetchMayGet<edm::stream::EDAnalyzerAdaptorBase>() {
726  return true;
727  }
728 
729  } // namespace
730 
731  template <typename T>
733  module_->updateLookup(iBranchType, iHelper, mustPrefetchMayGet<T>());
734  }
735 
736  template <typename T>
738  module_->updateLookup(iPI);
739  }
740 
741  template <typename T>
743  ProcessBlockHelperBase const& processBlockHelperBase) {
744  module_->selectInputProcessBlocks(productRegistry, processBlockHelperBase);
745  }
746 
747  namespace {
748  using ModuleToResolverIndicies =
749  std::unordered_multimap<std::string, std::tuple<edm::TypeID const*, const char*, edm::ProductResolverIndex>>;
750  void resolvePutIndiciesImpl(void*,
751  BranchType iBranchType,
752  ModuleToResolverIndicies const& iIndicies,
753  std::string const& iModuleLabel) {
754  //Do nothing
755  }
756 
757  void resolvePutIndiciesImpl(ProducerBase* iProd,
758  BranchType iBranchType,
759  ModuleToResolverIndicies const& iIndicies,
760  std::string const& iModuleLabel) {
761  iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
762  }
763 
764  void resolvePutIndiciesImpl(edm::stream::EDProducerAdaptorBase* iProd,
765  BranchType iBranchType,
766  ModuleToResolverIndicies const& iIndicies,
767  std::string const& iModuleLabel) {
768  iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
769  }
770  void resolvePutIndiciesImpl(edm::stream::EDFilterAdaptorBase* iProd,
771  BranchType iBranchType,
772  ModuleToResolverIndicies const& iIndicies,
773  std::string const& iModuleLabel) {
774  iProd->resolvePutIndicies(iBranchType, iIndicies, iModuleLabel);
775  }
776 
777  } // namespace
778 
779  template <typename T>
781  BranchType iBranchType,
782  std::unordered_multimap<std::string, std::tuple<TypeID const*, const char*, edm::ProductResolverIndex>> const&
783  iIndicies) {
784  resolvePutIndiciesImpl(&module(), iBranchType, iIndicies, description()->moduleLabel());
785  }
786 
787  template <>
789  return Worker::kProducer;
790  }
791  template <>
793  return Worker::kFilter;
794  }
795  template <>
797  return Worker::kAnalyzer;
798  }
799  template <>
801  return Worker::kOutputModule;
802  }
803 
804  template <>
806  return Worker::kProducer;
807  }
808  template <>
810  return Worker::kFilter;
811  }
812  template <>
814  return Worker::kAnalyzer;
815  }
816  template <>
818  return Worker::kOutputModule;
819  }
820 
821  template <>
823  return Worker::kProducer;
824  }
825  template <>
827  return Worker::kFilter;
828  }
829  template <>
831  return Worker::kAnalyzer;
832  }
833  template <>
835  return Worker::kOutputModule;
836  }
837 
838  template <>
840  return Worker::kProducer;
841  }
842  template <>
844  return Worker::kFilter;
845  }
846  template <>
848  return Worker::kAnalyzer;
849  }
850 
851  template <>
853  return Worker::kOne;
854  }
855  template <>
857  return Worker::kOne;
858  }
859  template <>
861  return Worker::kOne;
862  }
863  template <>
865  return Worker::kOne;
866  }
867 
868  template <>
870  return Worker::kGlobal;
871  }
872  template <>
874  return Worker::kGlobal;
875  }
876  template <>
878  return Worker::kGlobal;
879  }
880  template <>
882  return Worker::kGlobal;
883  }
884 
885  template <>
887  return Worker::kLimited;
888  }
889  template <>
891  return Worker::kLimited;
892  }
893  template <>
895  return Worker::kLimited;
896  }
897  template <>
899  return Worker::kLimited;
900  }
901 
902  template <>
904  return Worker::kStream;
905  }
906  template <>
908  return Worker::kStream;
909  }
910  template <>
912  return Worker::kStream;
913  }
914 
915  //Explicitly instantiate our needed templates to avoid having the compiler
916  // instantiate them in all of our libraries
917  template class WorkerT<one::EDProducerBase>;
918  template class WorkerT<one::EDFilterBase>;
919  template class WorkerT<one::EDAnalyzerBase>;
920  template class WorkerT<one::OutputModuleBase>;
921  template class WorkerT<global::EDProducerBase>;
922  template class WorkerT<global::EDFilterBase>;
923  template class WorkerT<global::EDAnalyzerBase>;
924  template class WorkerT<global::OutputModuleBase>;
928  template class WorkerT<limited::EDProducerBase>;
929  template class WorkerT<limited::EDFilterBase>;
930  template class WorkerT<limited::EDAnalyzerBase>;
931  template class WorkerT<limited::OutputModuleBase>;
932 } // namespace edm
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &) final
Definition: WorkerT.cc:732
static const char module_[]
void operator()(WorkerT< T > *iWorker, StreamID id, INFOTYPE const &info, ModuleCallingContext const *mcc)
Definition: WorkerT.cc:110
static const TGPicture * info(bool iBackgroundIsBlack)
#define CMS_SA_ALLOW
bool implDoEndProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:450
SerialTaskQueue * globalRunsQueue() final
Definition: WorkerT.cc:156
Definition: helper.py:1
roAction_t actions[nactions]
Definition: GenABIO.cc:181
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:567
std::string workerType() const override
Definition: WorkerT.cc:557
void callWorkerStreamEnd(D, StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
Definition: WorkerT.cc:472
bool wantsStreamLuminosityBlocks() const final
Definition: WorkerT.cc:151
bool implNeedToRunSelection() const final
Definition: WorkerT.cc:375
bool implDoStreamEnd(StreamID, RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:489
bool implDoPrePrefetchSelection(StreamID, EventPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:380
assert(be >=bs)
bool implDoAccessInputProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:444
BranchType
Definition: BranchType.h:11
void callWorkerStreamBegin(D, StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
Definition: WorkerT.cc:463
edm::propagate_const< std::shared_ptr< T > > module_
Definition: WorkerT.h:170
void itemsToGetForSelection(std::vector< ProductResolverIndexAndSkipBit > &) const final
Definition: WorkerT.cc:386
size_t transformIndex(edm::BranchDescription const &) const final
Definition: WorkerT.cc:308
void implRespondToOpenInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:604
void implRespondToCloseOutputFile() override
Definition: WorkerT.cc:614
Types moduleType() const override
int iEvent
Definition: GenABIO.cc:224
void doneWaiting(std::exception_ptr iExcept)
void callWorkerEndStream(D, StreamID)
Definition: WorkerT.cc:589
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:578
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, std::tuple< TypeID const *, const char *, edm::ProductResolverIndex >> const &iIndicies) final
Definition: WorkerT.cc:780
bool implDoStreamBegin(StreamID, RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:477
bool wantsInputProcessBlocks() const final
Definition: WorkerT.cc:131
Definition: value.py:1
TaskQueueAdaptor serializeRunModule() override
Definition: WorkerT.cc:625
ServiceToken lock() const
Definition: ServiceToken.h:101
void operator()(WorkerT< T > *iWorker, StreamID id)
Definition: WorkerT.cc:98
bool wantsGlobalLuminosityBlocks() const final
Definition: WorkerT.cc:141
ConcurrencyTypes
Definition: Worker.h:96
~WorkerT() override
Definition: WorkerT.cc:123
bool implDoBeginProcessBlock(ProcessBlockPrincipal const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:438
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:141
void implEndStream(StreamID) override
Definition: WorkerT.cc:594
void implDoTransformAsync(WaitingTaskHolder, size_t iTransformIndex, EventPrincipal const &, ParentContext const &, ServiceWeakToken const &) final
Definition: WorkerT.cc:246
void implBeginJob() override
Definition: WorkerT.cc:562
bool wantsProcessBlocks() const final
Definition: WorkerT.cc:126
void implRespondToCloseInputFile(FileBlock const &fb) override
Definition: WorkerT.cc:609
bool implDoEnd(RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:499
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
void callWorkerBeginStream(D, StreamID)
Definition: WorkerT.cc:573
void implDoAcquire(EventTransitionInfo const &, ModuleCallingContext const *, WaitingTaskWithArenaHolder &) final
Definition: WorkerT.cc:206
HLT enums.
ProductResolverIndex itemToGetForTransform(size_t iTransformIndex) const final
Definition: WorkerT.cc:341
bool wantsGlobalRuns() const final
Definition: WorkerT.cc:136
bool wantsStreamRuns() const final
Definition: WorkerT.cc:146
void implRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &) override
Definition: WorkerT.cc:619
bool implDoBegin(RunTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:456
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:742
ConcurrencyTypes moduleConcurrencyType() const override
bool implDo(EventTransitionInfo const &, ModuleCallingContext const *) override
Definition: WorkerT.cc:199