bool Activity::test()
{
- xbt_assert(state_ == State::INITED || state_ == State::STARTED || state_ == State::STARTING ||
- state_ == State::CANCELED || state_ == State::FINISHED);
-
- if (state_ == State::CANCELED || state_ == State::FINISHED)
- return true;
-
- if (state_ == State::INITED || state_ == State::STARTING)
- this->start();
-
- kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
- kernel::actor::ActivityTestSimcall observer{issuer, pimpl_.get(), "test"};
- if (kernel::actor::simcall_answered([&observer] { return observer.get_activity()->test(observer.get_issuer()); },
- &observer)) {
- complete(State::FINISHED);
- return true;
+ try {
+ wait_for(0.0);
+ } catch (const simgrid::TimeoutException&) {
+ return false;
+ } catch (const simgrid::Exception& e) {
+ XBT_DEBUG("Ignored exception: %s", e.what());
}
- return false;
+ return true;
}
ssize_t Activity::test_any(const std::vector<ActivityPtr>& activities) // XBT_ATTRIB_DEPRECATED_v339