X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/76081077f259960acb8a8624359ad2aa5c32ab46..40ee10e13b61bfb28374d96ade010a262b5abd44:/include/simgrid/kernel/Timer.hpp diff --git a/include/simgrid/kernel/Timer.hpp b/include/simgrid/kernel/Timer.hpp index d5f1e15084..010a66f8fa 100644 --- a/include/simgrid/kernel/Timer.hpp +++ b/include/simgrid/kernel/Timer.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2021. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2021-2023. The SimGrid Team. All rights reserved. */ /* 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. */ @@ -13,9 +12,7 @@ #include -namespace simgrid { -namespace kernel { -namespace timer { +namespace simgrid::kernel::timer { inline auto& kernel_timers() // avoid static initialization order fiasco { @@ -26,13 +23,15 @@ inline auto& kernel_timers() // avoid static initialization order fiasco /** @brief Timer datatype */ class Timer { -public: - const double date; + const double date_; + xbt::Task callback; std::remove_reference_t::handle_type handle_; - Timer(double date, xbt::Task&& callback) : date(date), callback(std::move(callback)) {} +public: + double get_date() const { return date_; } + + Timer(double date, xbt::Task&& callback) : date_(date), callback(std::move(callback)) {} - xbt::Task callback; void remove(); template static inline Timer* set(double date, F callback) @@ -42,10 +41,11 @@ public: static Timer* set(double date, xbt::Task&& 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 -} // namespace kernel -} // namespace simgrid +} // namespace simgrid::kernel::timer #endif /* SRC_KERNEL_TIMER_TIMER_HPP_ */