- switch (state_) {
-
- case SIMIX_DONE:
- /* do nothing, synchro done */
- XBT_DEBUG("ExecImpl::finish(): execution successful");
- break;
-
- case SIMIX_FAILED:
- XBT_DEBUG("ExecImpl::finish(): host '%s' failed", simcall->issuer->get_host()->get_cname());
- simcall->issuer->context_->iwannadie = true;
- if (simcall->issuer->get_host()->is_on())
- simcall->issuer->exception_ =
- std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"));
- /* else, the actor will be killed with no possibility to survive */
- break;
-
- case SIMIX_CANCELED:
- XBT_DEBUG("ExecImpl::finish(): execution canceled");
- simcall->issuer->exception_ =
- std::make_exception_ptr(simgrid::CancelException(XBT_THROW_POINT, "Execution Canceled"));
- break;
-
- case SIMIX_TIMEOUT:
- XBT_DEBUG("ExecImpl::finish(): execution timeouted");
- simcall->issuer->exception_ = std::make_exception_ptr(simgrid::TimeoutError(XBT_THROW_POINT, "Timeouted"));
- break;
-
- default:
- xbt_die("Internal error in ExecImpl::finish(): unexpected synchro state %d", static_cast<int>(state_));
- }