1 #ifndef FWCore_Framework_globalTransitionAsync_h
2 #define FWCore_Framework_globalTransitionAsync_h
51 template <
typename Traits>
55 bool cleaningUpAfterException) {
62 bool cleaningUpAfterException) {
69 bool cleaningUpAfterException) {
76 bool cleaningUpAfterException) {
80 template <
typename Traits>
83 typename Traits::TransitionInfoType& transitionInfo,
85 std::vector<SubProcess>& iSubProcesses,
86 bool cleaningUpAfterException =
false) {
89 using namespace edm::waiting_task;
94 chain::then([&iSubProcesses,
info = transitionInfo, cleaningUpAfterException](std::exception_ptr
const* iPtr,
99 for (
auto& subProcess : iSubProcesses) {
100 subProcessDoGlobalBeginTransitionAsync<Traits>(nextTask, subProcess,
info, cleaningUpAfterException);
102 }) |
chain::then([excpt = *iPtr](std::exception_ptr
const*,
auto nextTask) {
103 nextTask.doneWaiting(excpt);
106 for (
auto& subProcess : iSubProcesses) {
107 subProcessDoGlobalBeginTransitionAsync<Traits>(nextTask, subProcess,
info, cleaningUpAfterException);
114 template <
typename Traits>
117 typename Traits::TransitionInfoType& transitionInfo,
119 std::vector<SubProcess>& iSubProcesses,
120 bool cleaningUpAfterException) {
121 using namespace edm::waiting_task;
127 |
chain::then([&iSubProcesses,
info = transitionInfo, cleaningUpAfterException](std::exception_ptr
const* iPtr,
133 for (
auto& subProcess : iSubProcesses) {
136 }) |
chain::then([excpt](std::exception_ptr
const*,
auto nextTask) { nextTask.doneWaiting(excpt); }) |
139 for (
auto& subProcess : iSubProcesses) {
void processOneGlobalAsync(WaitingTaskHolder iTask, typename T::TransitionInfoType &transitionInfo, ServiceToken const &token, bool cleaningUpAfterException=false)
void subProcessDoGlobalEndTransitionAsync(WaitingTaskHolder iHolder, SubProcess &iSubProcess, LumiTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
void doBeginProcessBlockAsync(WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
constexpr auto then(O &&iO)
void doEndProcessBlockAsync(WaitingTaskHolder iHolder, ProcessBlockTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
void beginGlobalTransitionAsync(WaitingTaskHolder iWait, Schedule &iSchedule, typename Traits::TransitionInfoType &transitionInfo, ServiceToken const &token, std::vector< SubProcess > &iSubProcesses, bool cleaningUpAfterException=false)
void doBeginLuminosityBlockAsync(WaitingTaskHolder iHolder, LumiTransitionInfo const &iTransitionInfo)
auto runLast(edm::WaitingTaskHolder iTask)
void subProcessDoGlobalBeginTransitionAsync(WaitingTaskHolder iHolder, SubProcess &iSubProcess, LumiTransitionInfo const &iTransitionInfo, bool)
void doEndRunAsync(WaitingTaskHolder iHolder, RunTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
void doBeginRunAsync(WaitingTaskHolder iHolder, RunTransitionInfo const &iTransitionInfo)
void doEndLuminosityBlockAsync(WaitingTaskHolder iHolder, LumiTransitionInfo const &iTransitionInfo, bool cleaningUpAfterException)
void endGlobalTransitionAsync(WaitingTaskHolder iWait, Schedule &iSchedule, typename Traits::TransitionInfoType &transitionInfo, ServiceToken const &token, std::vector< SubProcess > &iSubProcesses, bool cleaningUpAfterException)