- while (not simcalls_.empty()) {
- smx_simcall_t simcall = simcalls_.front();
- simcalls_.pop_front();
- e_smx_state_t result;
- if (host_ && not host_->is_on()) {
- /* If the host running the synchro failed, notice it. This way, the asking
- * actor can be killed if it runs on that host itself */
- result = SIMIX_SRC_HOST_FAILURE;
- simcall->issuer->throw_exception(
- std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed")));
- }
+ if (surf_action_->get_state() == resource::Action::State::FAILED) {
+ if (host_ && not host_->is_on())
+ state_ = State::SRC_HOST_FAILURE;
+ else
+ state_ = State::CANCELED;
+ } else if (surf_action_->get_state() == resource::Action::State::FINISHED) {
+ state_ = State::DONE;
+ }