Go to the documentation of this file. 1 #ifndef FWCore_Framework_Path_h
2 #define FWCore_Framework_Path_h
35 class ModuleDescription;
36 class PathStatusInserter;
38 class LuminosityBlockPrincipal;
57 std::shared_ptr<ActivityRegistry> reg,
59 std::atomic<bool>* stopProcessEvent,
66 typename T::MyPrincipal
const&,
70 typename T::Context
const*);
120 std::shared_ptr<ActivityRegistry>
const actReg_;
161 unsigned int iModuleIndex,
176 template <
typename T>
177 class PathSignalSentry {
183 : a_(
a), nwrwue_(nwrwue), state_(state), pathContext_(pathContext) {
185 T::prePathSignal(a_, pathContext_);
187 ~PathSignalSentry() {
188 HLTPathStatus
status(state_, nwrwue_);
190 T::postPathSignal(a_,
status, pathContext_);
197 PathContext
const* pathContext_;
201 template <
typename T>
203 typename T::MyPrincipal
const&
p,
207 typename T::Context
const* context) {
209 worker.runWorkerAsync<
T>(
task,
p, es,
token, streamID, context);
WorkersInPath::size_type size_type
HLTState
status of a trigger path
Worker * pathStatusInserterWorker_
PathStatusInserter * pathStatusInserter_
Worker const * getWorker(size_type i) const
std::atomic< bool > stateLock_
void runAllModulesAsync(WaitingTask *, typename T::MyPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, typename T::Context const *)
void threadsafe_setFailedModuleInfo(int nwrwue, std::exception_ptr)
WaitingTaskList waitingTasks_
std::atomic< unsigned int > modulesToRun_
std::vector< WorkerInPath > WorkersInPath
std::shared_ptr< HLTGlobalStatus > TrigResPtr
void processOneOccurrenceAsync(WaitingTask *, EventPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, StreamContext const *)
void finished(std::exception_ptr, StreamContext const *, EventPrincipal const &iEP, EventSetupImpl const &iES, StreamID const &streamID)
int timesExcept(size_type i) const
std::atomic< bool > *const stopProcessingEvent_
void updateCounters(hlt::HLTState state)
void setPathStatusInserter(PathStatusInserter *pathStatusInserter, Worker *pathStatusInserterWorker)
int timesVisited(size_type i) const
int timesFailed(size_type i) const
Path(int bitpos, std::string const &path_name, WorkersInPath const &workers, TrigResPtr trptr, ExceptionToActionTable const &actions, std::shared_ptr< ActivityRegistry > reg, StreamContext const *streamContext, std::atomic< bool > *stopProcessEvent, PathContext::PathType pathType)
ExceptionToActionTable const *const act_table_
static void exceptionContext(cms::Exception &ex, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id, PathContext const &)
const std::shared_ptr< ActivityRegistry > actReg_
std::string const & pathName() const
void setEarlyDeleteHelpers(std::map< const Worker *, EarlyDeleteHelper * > const &)
Path const & operator=(Path const &)=delete
std::string const & name() const
roAction_t actions[nactions]
bool handleWorkerFailure(cms::Exception &e, int nwrwue, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id) const
int timesPassed(size_type i) const
void recordStatus(int nwrwue, hlt::HLTState state)
void workerFinished(std::exception_ptr const *iException, unsigned int iModuleIndex, EventPrincipal const &iEP, EventSetupImpl const &iES, ServiceToken const &iToken, StreamID const &iID, StreamContext const *iContext)
#define CMS_THREAD_GUARD(_var_)
void runNextWorkerAsync(unsigned int iNextModuleIndex, EventPrincipal const &, EventSetupImpl const &, ServiceToken const &, StreamID const &, StreamContext const *)