- SIMIX_synchro_stop_waiting(simcall->issuer, simcall);
- simcall->issuer->waiting_synchro = nullptr;
-
- if (surf_action_->get_state() == resource::Action::State::FAILED) {
- state_ = SIMIX_FAILED;
- simcall->issuer->context_->iwannadie = true;
- } else if (surf_action_->get_state() == resource::Action::State::FINISHED) {
- state_ = SIMIX_SRC_TIMEOUT;
- SIMIX_simcall_answer(simcall);
+ if (state_ == State::FAILED) {
+ XBT_DEBUG("RawImpl::finish(): host '%s' failed", simcall->issuer_->get_host()->get_cname());
+ simcall->issuer_->context_->set_wannadie();
+ simcall->issuer_->exception_ = std::make_exception_ptr(HostFailureException(XBT_THROW_POINT, "Host failed"));
+ } else if (state_ != State::SRC_TIMEOUT) {
+ xbt_die("Internal error in RawImpl::finish() unexpected synchro state %d", static_cast<int>(state_));