for (auto & s : seq)
s.on_setup(*this);
if (error())
{
for (auto & s : seq)
s.on_error(*this, error());
return child();
}
int err_code = CreateProcess(
exe,
cmd_line,
proc_attrs,
thread_attrs,
creation_flags,
env,
work_dir,
startup_info,
proc_info);
child c(proc_info, exit_code);
if (error())
for (auto & s : seq)
s.on_error(*this, error());
else
for (auto & s : seq)
s.on_success(*this);
//now we check again, because an on_success handler might've errored.
if (error())
{
for (auto & s : seq)
s.on_error(*this, error());
return child();
}
else
return c;