Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
make Resource:state_event_ private
authorSUTER Frederic <frederic.suter@cc.in2p3.fr>
Tue, 26 Oct 2021 14:10:30 +0000 (16:10 +0200)
committerSUTER Frederic <frederic.suter@cc.in2p3.fr>
Tue, 26 Oct 2021 14:10:30 +0000 (16:10 +0200)
include/simgrid/kernel/resource/Resource.hpp
src/surf/cpu_cas01.cpp
src/surf/cpu_ti.cpp
src/surf/disk_s19.cpp
src/surf/network_cm02.cpp
src/surf/ptask_L07.cpp

index 2c1bcc1..fce350f 100644 (file)
@@ -7,6 +7,7 @@
 #define SIMGRID_KERNEL_RESOURCE_RESOURCE_HPP
 
 #include "src/kernel/lmm/maxmin.hpp" // Constraint
+#include "src/kernel/resource/profile/Event.hpp"
 #include "src/kernel/resource/profile/FutureEvtSet.hpp"
 #include "src/kernel/resource/profile/Profile.hpp"
 #include <simgrid/forward.h>
@@ -28,6 +29,7 @@ class XBT_PUBLIC Resource {
   std::string name_ = "unnamed";
   bool is_on_       = true;
   bool sealed_      = false;
+  profile::Event* state_event_ = nullptr;
 
 protected:
   struct Metric {
@@ -35,7 +37,10 @@ protected:
     double scale;          /**< Current availability of the metric according to the profiles, in [0,1] */
     profile::Event* event; /**< The associated profile event associated to the metric */
   };
-  profile::Event* state_event_ = nullptr;
+
+  virtual profile::Event* get_state_event() const { return state_event_; }
+  virtual void set_state_event(profile::Event* evt) { state_event_ = evt; }
+  virtual void unref_state_event() { tmgr_trace_event_unref(&state_event_); }
 
 public:
   explicit Resource(const std::string& name) : name_(name){};
@@ -74,8 +79,8 @@ public:
   AnyResource* set_state_profile(profile::Profile* profile)
   {
     if (profile) {
-      xbt_assert(state_event_ == nullptr, "Cannot set a second state profile to %s", get_cname());
-      state_event_ = profile->schedule(&profile::future_evt_set, this);
+      xbt_assert(get_state_event() == nullptr, "Cannot set a second state profile to %s", get_cname());
+      set_state_event(profile->schedule(&profile::future_evt_set, this));
     }
 
     return static_cast<AnyResource*>(this);
index 78a6573..62c30c4 100644 (file)
@@ -107,7 +107,7 @@ void CpuCas01::apply_event(profile::Event* event, double value)
     on_speed_change();
 
     tmgr_trace_event_unref(&speed_.event);
-  } else if (event == state_event_) {
+  } else if (event == get_state_event()) {
     if (value > 0) {
       if (not is_on()) {
         XBT_VERB("Restart actors on host %s", get_iface()->get_cname());
@@ -129,7 +129,7 @@ void CpuCas01::apply_event(profile::Event* event, double value)
         }
       }
     }
-    tmgr_trace_event_unref(&state_event_);
+    unref_state_event();
 
   } else {
     xbt_die("Unknown event!\n");
index c58229a..53103d0 100644 (file)
@@ -360,7 +360,7 @@ void CpuTi::apply_event(kernel::profile::Event* event, double value)
     speed_.scale = value;
     tmgr_trace_event_unref(&speed_.event);
 
-  } else if (event == state_event_) {
+  } else if (event == get_state_event()) {
     if (value > 0) {
       if (not is_on()) {
         XBT_VERB("Restart actors on host %s", get_iface()->get_cname());
@@ -380,7 +380,7 @@ void CpuTi::apply_event(kernel::profile::Event* event, double value)
         }
       }
     }
-    tmgr_trace_event_unref(&state_event_);
+    unref_state_event();
 
   } else {
     xbt_die("Unknown event!\n");
index 1b7ef1b..6be25cd 100644 (file)
@@ -112,12 +112,12 @@ void DiskS19::apply_event(kernel::profile::Event* triggered, double value)
     set_write_bandwidth(value);
     tmgr_trace_event_unref(&write_bw_.event);
 
-  } else if (triggered == state_event_) {
+  } else if (triggered == get_state_event()) {
     if (value > 0)
       turn_on();
     else
       turn_off();
-    tmgr_trace_event_unref(&state_event_);
+    unref_state_event();
   } else {
     xbt_die("Unknown event!\n");
   }
index 817f809..144058e 100644 (file)
@@ -463,12 +463,12 @@ void NetworkCm02Link::apply_event(kernel::profile::Event* triggered, double valu
     set_latency(value);
     tmgr_trace_event_unref(&latency_.event);
 
-  } else if (triggered == state_event_) {
+  } else if (triggered == get_state_event()) {
     if (value > 0)
       turn_on();
     else
       turn_off();
-    tmgr_trace_event_unref(&state_event_);
+    unref_state_event();
   } else {
     xbt_die("Unknown event!\n");
   }
index c2bb74f..351bca8 100644 (file)
@@ -309,7 +309,7 @@ void CpuL07::apply_event(kernel::profile::Event* triggered, double value)
     on_speed_change();
     tmgr_trace_event_unref(&speed_.event);
 
-  } else if (triggered == state_event_) {
+  } else if (triggered == get_state_event()) {
     if (value > 0) {
       if (not is_on()) {
         XBT_VERB("Restart actors on host %s", get_iface()->get_cname());
@@ -317,8 +317,8 @@ void CpuL07::apply_event(kernel::profile::Event* triggered, double value)
       }
     } else
       get_iface()->turn_off();
-    tmgr_trace_event_unref(&state_event_);
 
+    unref_state_event();
   } else {
     xbt_die("Unknown event!\n");
   }
@@ -335,13 +335,12 @@ void LinkL07::apply_event(kernel::profile::Event* triggered, double value)
     set_latency(value);
     tmgr_trace_event_unref(&latency_.event);
 
-  } else if (triggered == state_event_) {
+  } else if (triggered == get_state_event()) {
     if (value > 0)
       turn_on();
     else
       turn_off();
-    tmgr_trace_event_unref(&state_event_);
-
+    unref_state_event();
   } else {
     xbt_die("Unknown event ! \n");
   }