SleepImpl* SleepImpl::start()
{
surf_action_ = host_->pimpl_cpu->sleep(duration_);
- surf_action_->set_data(this);
+ surf_action_->set_activity(this);
XBT_DEBUG("Create sleep synchronization %p", this);
return this;
}
while (not simcalls_.empty()) {
smx_simcall_t simcall = simcalls_.front();
simcalls_.pop_front();
- if (state_ == SIMIX_SRC_HOST_FAILURE) {
- /* If the host running the synchro failed, notice it. This way, the asking
- * actor can be killed if it runs on that host itself */
- simcall->issuer->context_->iwannadie = true;
- simcall->issuer->exception_ = std::make_exception_ptr(HostFailureException(XBT_THROW_POINT, "Host failed"));
- }
- simcall_process_sleep__set__result(simcall, state_);
simcall->issuer->waiting_synchro = nullptr;
if (simcall->issuer->is_suspended()) {
XBT_DEBUG("Wait! This process is suspended and can't wake up now.");
simcall->issuer->suspended_ = false;
- simcall_HANDLER_process_suspend(simcall, simcall->issuer);
+ simcall->issuer->suspend(simcall->issuer);
} else {
- SIMIX_simcall_answer(simcall);
+ simcall->issuer->simcall_answer();
}
}
- SIMIX_process_sleep_destroy(this);
+
+ clean_action();
}
} // namespace activity
} // namespace kernel