Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move another function out of simix + private field
authorSUTER Frederic <frederic.suter@cc.in2p3.fr>
Sun, 16 May 2021 15:12:34 +0000 (17:12 +0200)
committerSUTER Frederic <frederic.suter@cc.in2p3.fr>
Mon, 17 May 2021 10:52:33 +0000 (12:52 +0200)
include/simgrid/kernel/Timer.hpp
src/kernel/actor/ActorImpl.cpp
src/kernel/timer/Timer.cpp
src/simix/smx_global.cpp

index d5f1e15..78a1255 100644 (file)
@@ -26,11 +26,14 @@ inline auto& kernel_timers() // avoid static initialization order fiasco
 
 /** @brief Timer datatype */
 class Timer {
+  const double date_;
+
 public:
-  const double date;
+  double get_date() const { return date_; }
+
   std::remove_reference_t<decltype(kernel_timers())>::handle_type handle_;
 
-  Timer(double date, xbt::Task<void()>&& callback) : date(date), callback(std::move(callback)) {}
+  Timer(double date, xbt::Task<void()>&& callback) : date_(date), callback(std::move(callback)) {}
 
   xbt::Task<void()> callback;
   void remove();
@@ -42,6 +45,9 @@ public:
 
   static Timer* set(double date, xbt::Task<void()>&& callback);
   static double next() { return kernel_timers().empty() ? -1.0 : kernel_timers().top().first; }
+
+  /** Handle any pending timer. Returns if something was actually run. */
+  static bool execute_all();
 };
 
 } // namespace timer
index a55d76a..b0f00d2 100644 (file)
@@ -283,7 +283,7 @@ void ActorImpl::set_kill_time(double kill_time)
 
 double ActorImpl::get_kill_time() const
 {
-  return kill_timer_ ? kill_timer_->date : 0.0;
+  return kill_timer_ ? kill_timer_->get_date() : 0.0;
 }
 
 void ActorImpl::yield()
index 9c41232..df005ca 100644 (file)
@@ -4,7 +4,8 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#include "simgrid/kernel/Timer.hpp"
+#include <simgrid/kernel/Timer.hpp>
+#include <simgrid/simix.h>
 
 namespace simgrid {
 namespace kernel {
@@ -24,6 +25,21 @@ void Timer::remove()
   delete this;
 }
 
+/** Handle any pending timer. Returns if something was actually run. */
+bool Timer::execute_all()
+{
+  bool result = false;
+  while (not kernel_timers().empty() && SIMIX_get_clock() >= kernel_timers().top().first) {
+    result = true;
+    // FIXME: make the timers being real callbacks (i.e. provide dispatchers that read and expand the args)
+    Timer* timer = kernel_timers().top().second;
+    kernel_timers().pop();
+    timer->callback();
+    delete timer;
+  }
+  return result;
+}
+
 } // namespace timer
 } // namespace kernel
 } // namespace simgrid
index aa1e972..6afc643 100644 (file)
@@ -388,22 +388,6 @@ double SIMIX_get_clock()
   }
 }
 
-/** Handle any pending timer. Returns if something was actually run. */
-static bool SIMIX_execute_timers()
-{
-  bool result = false;
-  while (not simgrid::kernel::timer::kernel_timers().empty() &&
-         SIMIX_get_clock() >= simgrid::kernel::timer::kernel_timers().top().first) {
-    result = true;
-    // FIXME: make the timers being real callbacks (i.e. provide dispatchers that read and expand the args)
-    simgrid::kernel::timer::Timer* timer = simgrid::kernel::timer::kernel_timers().top().second;
-    simgrid::kernel::timer::kernel_timers().pop();
-    timer->callback();
-    delete timer;
-  }
-  return result;
-}
-
 /**
  * @ingroup SIMIX_API
  * @brief Run the main simulation loop.
@@ -533,7 +517,7 @@ void SIMIX_run()
     // Execute timers and tasks until there isn't anything to be done:
     bool again = false;
     do {
-      again = SIMIX_execute_timers();
+      again = simgrid::kernel::timer::Timer::execute_all();
       if (simix_global->execute_tasks())
         again = true;
       simix_global->wake_all_waiting_actors();
@@ -586,7 +570,7 @@ void SIMIX_timer_remove(smx_timer_t timer) // XBT_ATTRIB_DEPRECATED_v329
 /** @brief Returns the date at which the timer will trigger (or 0 if nullptr timer) */
 double SIMIX_timer_get_date(smx_timer_t timer) // XBT_ATTRIB_DEPRECATED_v329
 {
-  return timer ? timer->date : 0.0;
+  return timer ? timer->get_date() : 0.0;
 }
 
 void SIMIX_display_process_status() // XBT_ATTRIB_DEPRECATED_v329