- e_smx_state_t state;
- switch (surf_sleep->getState()) {
- case simgrid::surf::Action::State::failed:
- simcall->issuer->context->iwannadie = 1;
- // SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
- state = 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();
+}