24#include <seastar/core/future.hh>
26#include <seastar/core/timer-set.hh>
27#include <seastar/util/assert.hh>
28#include <seastar/util/std-compat.hh>
29#include <seastar/util/modules.hh>
31#include <boost/intrusive/list.hpp>
55SEASTAR_MODULE_EXPORT_BEGIN
57using steady_clock_type = std::chrono::steady_clock;
83template <
typename Clock = steady_clock_type>
86 typedef typename Clock::time_point time_point;
87 typedef typename Clock::duration duration;
91 boost::intrusive::list_member_hook<> _link;
95 std::optional<duration> _period;
98 bool _expired =
false;
99 void readd_periodic()
noexcept;
100 void arm_state(time_point until, std::optional<duration> period)
noexcept {
101 SEASTAR_ASSERT(!_armed);
116 timer(
timer&& t) noexcept : _sg(t._sg), _callback(std::move(t._callback)), _expiry(std::move(t._expiry)), _period(std::move(t._period)),
117 _armed(t._armed), _queued(t._queued), _expired(t._expired) {
118 _link.swap_nodes(t._link);
141 _callback = std::move(callback);
160 void arm(time_point until, std::optional<duration> period = {})
noexcept;
168 void rearm(time_point until, std::optional<duration> period = {})
noexcept {
182 void arm(duration delta)
noexcept {
206 bool armed() const noexcept {
return _armed; }
226extern template class timer<steady_clock_type>;
230SEASTAR_MODULE_EXPORT_END
Identifies function calls that are accounted as a group.
Definition: scheduling.hh:293
Definition: timer-set.hh:45
time_point get_timeout() const noexcept
Definition: timer.hh:218
void arm(time_point until, std::optional< duration > period={}) noexcept
bool armed() const noexcept
Definition: timer.hh:206
~timer()
Destroys the timer. The timer is cancelled if armed.
void arm(duration delta) noexcept
Definition: timer.hh:182
timer(scheduling_group sg, noncopyable_function< void()> &&callback) noexcept
Definition: timer.hh:126
void rearm(time_point until, std::optional< duration > period={}) noexcept
Definition: timer.hh:168
timer(noncopyable_function< void()> &&callback) noexcept
Definition: timer.hh:131
void rearm_periodic(duration delta) noexcept
Definition: timer.hh:197
void arm_periodic(duration delta) noexcept
Definition: timer.hh:189
timer() noexcept
Constructs a timer with no callback set and no expiration time.
Definition: timer.hh:110
void set_callback(noncopyable_function< void()> &&callback) noexcept
Definition: timer.hh:146
timer(timer &&t) noexcept
Definition: timer.hh:116
void set_callback(scheduling_group sg, noncopyable_function< void()> &&callback) noexcept
Definition: timer.hh:139
future now()
Returns a ready future.
Definition: later.hh:35
Seastar API namespace.
Definition: abort_on_ebadf.hh:26
scheduling_group current_scheduling_group() noexcept
Returns the current scheduling group.
Definition: scheduling.hh:405
Definition: noncopyable_function.hh:37