-
- void consider_best() override
- {
- for (auto& [aid, actor] : actors_to_run_)
- if (actor.is_todo())
- return;
-
- for (auto& [aid, actor] : actors_to_run_) {
- if (not actor.is_enabled() || actor.is_done())
- continue;
-
- const Transition* transition = actor.get_transition(actor.get_times_considered()).get();
-
- const CommRecvTransition* cast_recv = static_cast<CommRecvTransition const*>(transition);
- if (cast_recv != nullptr and mailbox_.count(cast_recv->get_mailbox()) > 0 and
- mailbox_.at(cast_recv->get_mailbox()) > 0) {
- actor.mark_todo();
- return;
- }
-
- const CommSendTransition* cast_send = static_cast<CommSendTransition const*>(transition);
- if (cast_send != nullptr and mailbox_.count(cast_send->get_mailbox()) > 0 and
- mailbox_.at(cast_send->get_mailbox()) < 0) {
- actor.mark_todo();
- return;
- }
- }
- for (auto& [_, actor] : actors_to_run_) {
- if (actor.is_enabled() and not actor.is_done()) {
- actor.mark_todo();
- return;
- }
- }
- }