Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2022.
[simgrid.git] / src / kernel / timer / Timer.cpp
index af0b2af..5cc19ee 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2021. The SimGrid Team.
+/* Copyright (c) 2021-2022. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -11,9 +11,9 @@ namespace simgrid {
 namespace kernel {
 namespace timer {
 
-std::shared_ptr<Timer> Timer::set(double date, xbt::Task<void()>&& callback)
+Timer* Timer::set(double date, xbt::Task<void()>&& callback)
 {
-  auto timer     = std::make_shared<Timer>(date, std::move(callback));
+  auto* timer    = new Timer(date, std::move(callback));
   timer->handle_ = kernel_timers().emplace(std::make_pair(date, timer));
   return timer;
 }
@@ -22,6 +22,7 @@ std::shared_ptr<Timer> Timer::set(double date, xbt::Task<void()>&& callback)
 void Timer::remove()
 {
   kernel_timers().erase(handle_);
+  delete this;
 }
 
 /** Handle any pending timer. Returns if something was actually run. */
@@ -31,9 +32,10 @@ bool Timer::execute_all()
   while (not kernel_timers().empty() && s4u::Engine::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)
-    std::shared_ptr<Timer> timer = kernel_timers().top().second;
+    Timer* timer = kernel_timers().top().second;
     kernel_timers().pop();
     timer->callback();
+    delete timer;
   }
   return result;
 }