Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
prefer automatic mem handling (std::vector<>* becomes std::vector<>)
[simgrid.git] / include / simgrid / kernel / resource / Model.hpp
index 9a614ca..5985e4b 100644 (file)
@@ -20,8 +20,8 @@ class XBT_PUBLIC Model {
 public:
   /** @brief Possible update mechanisms */
   enum class UpdateAlgo {
-    Full, /**< Full update mechanism: the remaining time of every action is recomputed at each step */
-    Lazy  /**< Lazy update mechanism: only the modified actions get recomputed.
+    FULL, /**< Full update mechanism: the remaining time of every action is recomputed at each step */
+    LAZY  /**< Lazy update mechanism: only the modified actions get recomputed.
                    It may be slower than full if your system is tightly coupled to the point where every action
                    gets recomputed anyway. In that case, you'd better not try to be cleaver with lazy and go for
                    a simple full update.  */
@@ -43,6 +43,9 @@ public:
   /** @brief Get the set of [actions](@ref Action) in *finished* state */
   Action::StateSet* get_finished_action_set() const { return finished_action_set_; }
 
+  /** @brief Get the set of [actions](@ref Action) in *ignored* state */
+  Action::StateSet* get_ignored_action_set() const { return ignored_action_set_; }
+
   /** @brief Get the set of modified [actions](@ref Action) */
   Action::ModifiedSet* get_modified_set() const;
 
@@ -68,6 +71,13 @@ public:
   virtual double next_occuring_event_lazy(double now);
   virtual double next_occuring_event_full(double now);
 
+private:
+  Action* extract_action(Action::StateSet* list);
+
+public:
+  Action* extract_done_action();
+  Action* extract_failed_action();
+
   /**
    * @brief Update action to the current time
    *
@@ -92,10 +102,18 @@ private:
   Action::StateSet* started_action_set_  = new Action::StateSet(); /**< Started not done */
   Action::StateSet* failed_action_set_  = new Action::StateSet(); /**< Done with failure */
   Action::StateSet* finished_action_set_ = new Action::StateSet(); /**< Done successful */
+  Action::StateSet* ignored_action_set_  = new Action::StateSet(); /**< not considered (failure detectors?) */
+
   ActionHeap action_heap_;
 };
 
 } // namespace resource
 } // namespace kernel
 } // namespace simgrid
+
+/** \ingroup SURF_models
+ *  \brief List of initialized models
+ */
+XBT_PUBLIC_DATA std::vector<simgrid::kernel::resource::Model*> all_existing_models;
+
 #endif