Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
New function: Engine::track_vetoed_activities()
[simgrid.git] / include / simgrid / s4u / Activity.hpp
index ff42c98..b7d3594 100644 (file)
@@ -88,6 +88,8 @@ protected:
       throw std::invalid_argument("Dependency does not exist. Can not be removed.");
   }
 
+  static std::set<Activity*>* vetoed_activities_;
+
 public:
   /*! Signal fired each time that the activity fails to start because of a veto (e.g., unsolved dependency or no
    * resource assigned) */
@@ -100,10 +102,15 @@ public:
       XBT_CVERB(s4u_activity, "'%s' is assigned to a resource and all dependencies are solved. Let's start", get_cname());
       start();
     } else {
+      if (vetoed_activities_ != nullptr)
+        vetoed_activities_->insert(this);
       on_veto(*this);
     }
   }
 
+  static std::set<Activity*>* get_vetoed_activities() { return vetoed_activities_; }
+  static void set_vetoed_activities(std::set<Activity*>* whereto) { vetoed_activities_ = whereto; }
+
 #ifndef DOXYGEN
   Activity(Activity const&) = delete;
   Activity& operator=(Activity const&) = delete;