X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2be8ce37c4ff2c151c8cb5f8daa7ee069c136911..5843ccab4e336d47ca34f54e68760ac78d242f36:/src/kernel/activity/Synchro.cpp diff --git a/src/kernel/activity/Synchro.cpp b/src/kernel/activity/Synchro.cpp index 2067f07973..aa57662850 100644 --- a/src/kernel/activity/Synchro.cpp +++ b/src/kernel/activity/Synchro.cpp @@ -49,17 +49,6 @@ void SynchroImpl::cancel() /* I cannot cancel raw synchros directly. */ } -void SynchroImpl::post() -{ - if (model_action_->get_state() == resource::Action::State::FAILED) - set_state(State::FAILED); - else if (model_action_->get_state() == resource::Action::State::FINISHED) - set_state(State::SRC_TIMEOUT); - - clean_action(); - /* Answer all simcalls associated with the synchro */ - finish(); -} void SynchroImpl::set_exception(actor::ActorImpl* issuer) { if (get_state() == State::FAILED) { @@ -74,6 +63,13 @@ void SynchroImpl::set_exception(actor::ActorImpl* issuer) void SynchroImpl::finish() { XBT_DEBUG("SynchroImpl::finish() in state %s", get_state_str()); + if (model_action_->get_state() == resource::Action::State::FAILED) + set_state(State::FAILED); + else if (model_action_->get_state() == resource::Action::State::FINISHED) + set_state(State::SRC_TIMEOUT); + + clean_action(); + xbt_assert(simcalls_.size() == 1, "Unexpected number of simcalls waiting: %zu", simcalls_.size()); actor::Simcall* simcall = simcalls_.front(); simcalls_.pop_front();