// <----- send ACTORS_STATUS_REPLY
// <----- send `N` `s_mc_message_actors_status_one_t` structs
// <----- send `M` `s_mc_message_simcall_probe_one_t` structs
- s_mc_message_t msg;
- memset(&msg, 0, sizeof msg);
- msg.type = simgrid::mc::MessageType::ACTORS_STATUS;
- model_checker_->channel().send(msg);
+ model_checker_->channel().send(MessageType::ACTORS_STATUS);
s_mc_message_actors_status_answer_t answer;
ssize_t received = model_checker_->channel().receive(answer);
// of 3 transitions, that is ignored here since that invariant needs to be enforced on the AppSide
const auto expected_transitions = std::accumulate(
status.begin(), status.end(), 0, [](int total, const auto& actor) { return total + actor.n_transitions; });
- xbt_assert(expected_transitions == action_pool.size(),
+ xbt_assert(expected_transitions == static_cast<int>(action_pool.size()),
"Expected to receive %d transition(s) but was only notified of %lu by the app side", expected_transitions,
action_pool.size());
"(currently %d), but only %d transition(s) was/were said to be encoded",
actor.max_considered, actor.n_transitions);
- std::stringstream stream((*action_pool_iter).buffer.data());
- auto actor_transitions = std::vector<std::unique_ptr<Transition>>(actor.max_considered);
-
- for (int times_considered = 0; times_considered < actor.max_considered; times_considered++, action_pool_iter++) {
+ auto actor_transitions = std::vector<std::unique_ptr<Transition>>(actor.n_transitions);
+ for (int times_considered = 0; times_considered < actor.n_transitions; times_considered++, action_pool_iter++) {
+ std::stringstream stream((*action_pool_iter).buffer.data());
auto transition = std::unique_ptr<Transition>(deserialize_transition(actor.aid, times_considered, stream));
- actor_transitions.push_back(std::move(transition));
+ actor_transitions[times_considered] = std::move(transition);
}
+ XBT_DEBUG("Received %d transitions for actor %ld", actor.n_transitions, actor.aid);
whereto.try_emplace(actor.aid, actor.aid, actor.enabled, actor.max_considered, std::move(actor_transitions));
}
}