bool ActivityImpl::test(actor::ActorImpl* issuer)
{
- // Associate this simcall to the synchro
- auto* observer = dynamic_cast<kernel::actor::ActivityTestSimcall*>(issuer->simcall_.observer_);
- if (observer)
- register_simcall(&issuer->simcall_);
-
if (state_ != State::WAITING && state_ != State::RUNNING) {
finish();
issuer->exception_ = nullptr; // Do not propagate exception in that case
return true;
}
- if (observer) {
+ if (auto* observer = dynamic_cast<kernel::actor::ActivityTestSimcall*>(issuer->simcall_.observer_))
observer->set_result(false);
- issuer->waiting_synchro_ = nullptr;
- unregister_simcall(&issuer->simcall_);
- issuer->simcall_answer();
- }
+
return false;
}
for (std::size_t i = 0; i < activities.size(); ++i) {
if (activities[i]->test(issuer)) {
observer->set_result(i);
- issuer->simcall_answer();
return i;
}
}
- issuer->simcall_answer();
return -1;
}
kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
kernel::actor::ActivityTestSimcall observer{issuer, pimpl_.get()};
- if (kernel::actor::simcall_blocking([&observer] { observer.get_activity()->test(observer.get_issuer()); },
- &observer)) {
+ if (kernel::actor::simcall([&observer] { return observer.get_activity()->test(observer.get_issuer()); }, &observer)) {
complete(State::FINISHED);
return true;
}
kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
kernel::actor::ActivityTestanySimcall observer{issuer, ractivities};
- ssize_t changed_pos = kernel::actor::simcall_blocking(
- [&observer] { kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities()); },
+ ssize_t changed_pos = kernel::actor::simcall(
+ [&observer] {
+ return kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities());
+ },
&observer);
if (changed_pos != -1)
activities.at(changed_pos)->complete(State::FINISHED);
try{
kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
kernel::actor::ActivityTestSimcall observer{issuer, (*request)->action_.get()};
- *flag = kernel::actor::simcall_blocking([&observer] { observer.get_activity()->test(observer.get_issuer()); },
- &observer);
+ *flag = kernel::actor::simcall([&observer] { return observer.get_activity()->test(observer.get_issuer()); },
+ &observer);
} catch (const Exception&) {
*flag = 0;
return ret;
try{
kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
kernel::actor::ActivityTestanySimcall observer{issuer, comms};
- i = kernel::actor::simcall_blocking(
- [&observer] { kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities()); },
+ i = kernel::actor::simcall(
+ [&observer] {
+ return kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities());
+ },
&observer);
} catch (const Exception&) {
XBT_DEBUG("Exception in testany");