1 #ifndef FWCore_Framework_WorkerManager_h 2 #define FWCore_Framework_WorkerManager_h 21 class ExceptionCollector;
22 class ExceptionToActionTable;
24 class ModuleTypeResolverMaker;
25 class PreallocationConfiguration;
27 namespace eventsetup {
41 std::shared_ptr<ActivityRegistry> actReg,
49 std::shared_ptr<ProcessConfiguration const> processConfiguration,
51 std::set<std::string>& unscheduledLabels,
52 std::vector<std::string>& shouldBeUsedLabels);
54 template <
typename T,
typename U>
56 typename T::TransitionInfoType&,
59 typename T::Context
const* topContext,
64 typename T::TransitionInfoType
const&,
68 typename T::Context
const*);
92 std::shared_ptr<ProcessConfiguration const> processConfiguration,
105 template <
typename T,
typename U>
107 typename T::TransitionInfoType&
info,
110 typename T::Context
const* topContext,
112 static_assert(!T::isEvent_);
116 for (
auto it = allWorkers_.rbegin(), itEnd = allWorkers_.rend();
it != itEnd; ++
it) {
134 template <
typename T>
136 typename T::TransitionInfoType
const&
info,
140 typename T::Context
const*
context) {
roAction_t actions[nactions]
void doWorkNoPrefetchingAsync(WaitingTaskHolder, typename T::TransitionInfoType const &, ServiceToken const &, StreamID, ParentContext const &, typename T::Context const *) noexcept
worker_container const & workers() const
void processAccumulatorsAsync(WaitingTaskHolder, typename T::TransitionInfoType const &, ServiceToken const &, StreamID, ParentContext const &, typename T::Context const *)
UnscheduledCallProducer unscheduled_
void beginJob(ProductRegistry const &iRegistry, eventsetup::ESRecordsToProductResolverIndices const &, ProcessBlockHelperBase const &, GlobalContext const &)
void setupOnDemandSystem(EventTransitionInfo const &)
AllWorkers const & unscheduledWorkers() const
void deleteModuleIfExists(std::string const &moduleLabel)
ExceptionToActionTable const * actionTable_
Worker * getWorker(ParameterSet &pset, ProductRegistry &preg, PreallocationConfiguration const *prealloc, std::shared_ptr< ProcessConfiguration const > processConfiguration, std::string const &label)
void const * lastSetupEventPrincipal_
std::vector< Worker * > AllWorkers
void endJob(ExceptionCollector &, GlobalContext const &)
WorkerManager(std::shared_ptr< ActivityRegistry > actReg, ExceptionToActionTable const &actions, ModuleTypeResolverMaker const *typeResolverMaker)
void processOneOccurrenceAsync(WaitingTaskHolder, typename T::TransitionInfoType &, ServiceToken const &, StreamID, typename T::Context const *topContext, U const *context) noexcept
AllWorkers const & allWorkers() const
void runAccumulatorsAsync(WaitingTaskHolder task, typename T::TransitionInfoType const &info, ServiceToken const &token, StreamID streamID, ParentContext const &parentContext, typename T::Context const *context) noexcept
ExceptionToActionTable const & actionTable() const
void addToUnscheduledWorkers(ParameterSet &pset, ProductRegistry &preg, PreallocationConfiguration const *prealloc, std::shared_ptr< ProcessConfiguration const > processConfiguration, std::string label, std::set< std::string > &unscheduledLabels, std::vector< std::string > &shouldBeUsedLabels)
void setupResolvers(Principal &principal)
WorkerRegistry workerReg_
The Registry of all workers that where requested Holds all instances of workers. In this implementati...
void endStream(StreamID, StreamContext const &, ExceptionCollector &, std::mutex &collectorMutex) noexcept
void beginStream(StreamID, StreamContext const &)
void addToAllWorkers(Worker *w)