25#ifndef MYSQL_HARNESS_NET_TS_TIMER_H_
26#define MYSQL_HARNESS_NET_TS_TIMER_H_
41 const typename Clock::duration &d) {
45 const typename Clock::time_point &tp) {
46 auto diff = tp - Clock::now();
48 if (
diff > Clock::duration::max())
return Clock::duration::max();
49 if (
diff < Clock::duration::min())
return Clock::duration::min();
55template <
class Clock,
class WaitTraits>
60 using duration =
typename clock_type::duration;
84 if (
this == std::addressof(rhs)) {
90 expiry_ = std::move(rhs.expiry_);
106 size_t cancelled =
cancel();
118 while (clock_type::now() <
expiry_) {
119 std::this_thread::sleep_for(traits_type::to_wait_duration(
expiry_));
125 template <
class CompletionToken>
130 std::move(
init.completion_handler));
132 return init.result.get();
static mysql_service_status_t init()
Component initialization.
Definition: audit_api_message_emit.cc:570
Definition: executor.h:71
basic_waitable_timer(const basic_waitable_timer &)=delete
executor_type executor_
Definition: timer.h:136
~basic_waitable_timer()
Definition: timer.h:80
basic_waitable_timer(io_context &io_ctx)
Definition: timer.h:65
basic_waitable_timer & operator=(const basic_waitable_timer &)=delete
time_point expiry_
Definition: timer.h:137
basic_waitable_timer(io_context &io_ctx, const duration &d)
Definition: timer.h:69
Id * id() const
Definition: timer.h:145
basic_waitable_timer(basic_waitable_timer &&rhs)
Definition: timer.h:73
size_t cancel()
Definition: timer.h:100
time_point expiry() const
Definition: timer.h:103
basic_waitable_timer(io_context &io_ctx, const time_point &tp)
Definition: timer.h:67
typename clock_type::duration duration
Definition: timer.h:60
typename clock_type::time_point time_point
Definition: timer.h:61
auto async_wait(CompletionToken &&token)
Definition: timer.h:126
WaitTraits traits_type
Definition: timer.h:62
size_t expires_at(const time_point &t)
Definition: timer.h:105
executor_type get_executor() noexcept
Definition: timer.h:99
size_t cancel_one()
Definition: timer.h:101
size_t expires_after(const duration &d)
Definition: timer.h:113
basic_waitable_timer & operator=(basic_waitable_timer &&rhs)
Definition: timer.h:83
stdx::expected< void, std::error_code > wait()
Definition: timer.h:117
Clock clock_type
Definition: timer.h:59
std::unique_ptr< Id > id_
Definition: timer.h:147
Definition: io_context.h:989
io_context & context() const noexcept
Definition: io_context.h:1001
Definition: io_context.h:60
size_t cancel_one(const Timer &)
Definition: io_context.h:846
void async_wait(native_handle_type fd, impl::socket::wait_type wt, Op &&op)
Definition: io_context.h:482
stdx::expected< void, std::error_code > cancel(native_handle_type fd)
cancel all async-ops of a file-descriptor.
Definition: io_context.h:1086
Definition: expected.h:943
static Bigint * diff(Bigint *a, Bigint *b, Stack_alloc *alloc)
Definition: dtoa.cc:1082
Header for compiler-dependent features.
Definition: varlen_sort.h:183
static Clock::duration to_wait_duration(const typename Clock::time_point &tp)
Definition: timer.h:44
static Clock::duration to_wait_duration(const typename Clock::duration &d)
Definition: timer.h:40