while (auto* action = model->extract_failed_action()) {
XBT_DEBUG(" Handling Action %p", action);
if (action->get_activity() != nullptr) { // Skip vcpu actions
+ activity::ActivityImplPtr activity(action->get_activity());
// Action failures are not automatically reported when the action is started by maestro (as in SimDAG)
- if (action->get_activity()->get_actor() == maestro_)
- action->get_activity()->get_iface()->complete(s4u::Activity::State::FAILED);
+ if (activity->get_actor() == maestro_)
+ activity->get_iface()->complete(s4u::Activity::State::FAILED);
- activity::ActivityImplPtr(action->get_activity())->finish();
+ activity->finish();
}
}
XBT_DEBUG("Handling the terminated actions (if any)");
while (auto* action = model->extract_done_action()) {
XBT_DEBUG(" Handling Action %p", action);
if (action->get_activity() != nullptr) {
+ activity::ActivityImplPtr activity(action->get_activity());
+
// Action termination are not automatically reported when the action is started by maestro (as in SimDAG)
- action->get_activity()->set_finish_time(action->get_finish_time());
+ activity->set_finish_time(action->get_finish_time());
- if (action->get_activity()->get_actor() == maestro_)
- action->get_activity()->get_iface()->complete(s4u::Activity::State::FINISHED);
+ if (activity->get_actor() == maestro_)
+ activity->get_iface()->complete(s4u::Activity::State::FINISHED);
- activity::ActivityImplPtr(action->get_activity())->finish();
+ activity->finish();
}
}
}
}
XBT_DEBUG("Looking for next event in all models");
- for (auto model : models_) {
+ for (auto* model : models_) {
if (not model->next_occurring_event_is_idempotent())
continue;
double next_event_date = profile::future_evt_set.next_date();
XBT_DEBUG("Next TRACE event: %f", next_event_date);
- for (auto model : models_) {
+ for (auto* model : models_) {
/* Skip all idempotent models, they were already treated above
* NS3 is the one to handled here */
if (model->next_occurring_event_is_idempotent())