- e_smx_state_t result;
- switch (surf_sleep->get_state()) {
- case simgrid::kernel::resource::Action::State::failed:
- simcall->issuer->context->iwannadie = 1;
- result = SIMIX_SRC_HOST_FAILURE;
- break;
+void SleepImpl::post()
+{
+ if (surf_action_->get_state() == resource::Action::State::FAILED) {
+ if (host_ && not host_->is_on())
+ state_ = SIMIX_SRC_HOST_FAILURE;
+ else
+ state_ = SIMIX_CANCELED;
+ } else if (surf_action_->get_state() == resource::Action::State::FINISHED) {
+ state_ = SIMIX_DONE;
+ }
+ /* Answer all simcalls associated with the synchro */
+ finish();
+}