X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d9a39dd49d59d7ef3a66727056ab3725e1ebcefc..2e579c30e0553e6527b8f33322d49b5d9d5d7453:/src/s4u/s4u_Activity.cpp diff --git a/src/s4u/s4u_Activity.cpp b/src/s4u/s4u_Activity.cpp index 32f7bd1fb6..6032b0d08a 100644 --- a/src/s4u/s4u_Activity.cpp +++ b/src/s4u/s4u_Activity.cpp @@ -25,7 +25,9 @@ template class xbt::Extendable; namespace s4u { xbt::signal Activity::on_veto; -xbt::signal Activity::on_completion; +xbt::signal Activity::on_completion; +xbt::signal Activity::on_suspended; +xbt::signal Activity::on_resumed; std::set* Activity::vetoed_activities_ = nullptr; @@ -59,6 +61,7 @@ Activity* Activity::wait_for(double timeout) throw HostFailureException(XBT_THROW_POINT, "Cannot wait for a failed exec"); if (dynamic_cast(this)) throw StorageFailureException(XBT_THROW_POINT, "Cannot wait for a failed I/O"); + THROW_IMPOSSIBLE; } kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); @@ -83,7 +86,8 @@ bool Activity::test() kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); kernel::actor::ActivityTestSimcall observer{issuer, pimpl_.get()}; - if (kernel::actor::simcall([&observer] { return observer.get_activity()->test(observer.get_issuer()); }, &observer)) { + if (kernel::actor::simcall_answered([&observer] { return observer.get_activity()->test(observer.get_issuer()); }, + &observer)) { complete(State::FINISHED); return true; } @@ -98,7 +102,7 @@ ssize_t Activity::test_any(const std::vector& activities) kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); kernel::actor::ActivityTestanySimcall observer{issuer, ractivities}; - ssize_t changed_pos = kernel::actor::simcall( + ssize_t changed_pos = kernel::actor::simcall_answered( [&observer] { return kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities()); }, @@ -129,7 +133,7 @@ ssize_t Activity::wait_any_for(const std::vector& activities, doubl Activity* Activity::cancel() { - kernel::actor::simcall([this] { + kernel::actor::simcall_answered([this] { XBT_HERE(); if (pimpl_) pimpl_->cancel();