10 #include "boost/bind.hpp"
17 boost::shared_ptr<ActivityRegistry>
areg,
31 pathContext_(path_name, streamContext, bitpos, pathType) {
33 for (
auto& workerInPath :
workers_) {
39 stopwatch_(r.stopwatch_),
40 timesRun_(r.timesRun_),
41 timesPassed_(r.timesPassed_),
42 timesFailed_(r.timesFailed_),
43 timesExcept_(r.timesExcept_),
48 act_table_(r.act_table_),
50 earlyDeleteHelpers_(r.earlyDeleteHelpers_),
51 pathContext_(r.pathContext_) {
53 for (
auto& workerInPath :
workers_) {
70 bool should_continue =
true;
79 should_continue =
false;
90 std::ostringstream ost;
91 ost <<
"If you wish to continue processing events after a " << pNF <<
" exception,\n" <<
92 "add \"SkipEvent = cms.untracked.vstring('ProductNotFound')\" to the \"options\" PSet in the configuration.\n";
100 return should_continue;
111 std::ostringstream ost;
113 ost <<
"Calling event method";
115 else if (begin && branchType ==
InRun) {
116 ost <<
"Calling beginRun";
118 else if (begin && branchType ==
InLumi) {
119 ost <<
"Calling beginLuminosityBlock";
121 else if (!begin && branchType ==
InLumi) {
122 ost <<
"Calling endLuminosityBlock";
124 else if (!begin && branchType ==
InRun) {
125 ost <<
"Calling endRun";
129 ost <<
"Calling unknown function";
134 ost <<
"Running path '" << pathContext.
pathName() <<
"'";
137 ost <<
"Processing ";
168 stopwatch_.reset(
new RunStopwatch::StopwatchPointer::element_type);
180 std::vector<EarlyDeleteHelper*>
temp;
181 temp.reserve(iWorkerToDeleter.size());
184 if(
found != iWorkerToDeleter.end()) {
185 temp.push_back(
found->second);
186 found->second->addedToPath();
189 std::vector<EarlyDeleteHelper*> tempCorrectSize(temp.begin(),temp.end());
196 helper->pathFinished(iEvent);
std::string const & pathName() const
void recordStatus(int nwrwue, bool isEvent)
void handleEarlyFinish(EventPrincipal &)
std::vector< EarlyDeleteHelper * > earlyDeleteHelpers_
std::vector< WorkerInPath > WorkersInPath
std::string const & moduleName() const
std::string const & category() const
exception_actions::ActionCodes find(const std::string &category) const
std::string const & moduleLabel() const
Func for_all(ForwardSequence &s, Func f)
wrapper for std::for_each
boost::shared_ptr< HLTGlobalStatus > TrigResPtr
void printCmsExceptionWarning(char const *behavior, cms::Exception const &e, edm::JobReport *jobRep=0, int rc=-1)
void addAdditionalInfo(std::string const &info)
static std::string codeToString(Code)
-----------— implementation details ---------------—
Path(int bitpos, std::string const &path_name, WorkersInPath const &workers, TrigResPtr trptr, ExceptionToActionTable const &actions, boost::shared_ptr< ActivityRegistry > reg, StreamContext const *streamContext, PathContext::PathType pathType)
static void exceptionContext(cms::Exception &ex, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id, PathContext const &)
void updateCounters(bool succeed, bool isEvent)
void addContext(std::string const &context)
bool handleWorkerFailure(cms::Exception &e, int nwrwue, bool isEvent, bool begin, BranchType branchType, ModuleDescription const &, std::string const &id)
void setEarlyDeleteHelpers(std::map< const Worker *, EarlyDeleteHelper * > const &)
RunStopwatch::StopwatchPointer stopwatch_
ExceptionToActionTable const * act_table_
Worker const * getWorker(size_type i) const