+ simgrid::s4u::Activity::on_veto.connect([&e](simgrid::s4u::Activity& a) {
+ auto& exec = static_cast<simgrid::s4u::Exec&>(a);
+
+ // First display the situation
+ XBT_INFO("Activity '%s' vetoed. Dependencies: %s; Ressources: %s", exec.get_cname(),
+ (exec.dependencies_solved() ? "solved" : "NOT solved"),
+ (exec.is_assigned() ? "assigned" : "NOT assigned"));
+
+ // In this simple case, we just assign the child task to a resource when its dependencies are solved
+ if (exec.dependencies_solved() && not exec.is_assigned()) {
+ XBT_INFO("Activity %s's dependencies are resolved. Let's assign it to Fafard.", exec.get_cname());
+ exec.set_host(e.host_by_name("Fafard"));
+ }
+ });
+