class KernelTimeout

Defined at line 42 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

An optional timeout, with nanosecond granularity.

This is a private low-level API for use by a handful of low-level

components. Higher-level components should build APIs based on

absl::Time and absl::Duration.

Public Methods

void KernelTimeout (absl::Time t)

Construct an absolute timeout that should expire at `t`.

void KernelTimeout (absl::Duration d)

Construct a relative timeout that should expire after `d`.

void KernelTimeout ()

Infinite timeout.

Defined at line 51 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

struct timespec MakeAbsTimespec ()

Convert to `struct timespec` for interfaces that expect an absolute

timeout. If !has_timeout() or is_relative_timeout(), attempts to convert to

a reasonable absolute timeout, but callers should to test has_timeout() and

is_relative_timeout() and prefer to use a more appropriate interface.

struct timespec MakeRelativeTimespec ()

Convert to `struct timespec` for interfaces that expect a relative

timeout. If !has_timeout() or is_absolute_timeout(), attempts to convert to

a reasonable relative timeout, but callers should to test has_timeout() and

is_absolute_timeout() and prefer to use a more appropriate interface. Since

the return value is a relative duration, it should be recomputed by calling

this method in the case of a spurious wakeup.

struct timespec MakeClockAbsoluteTimespec (clockid_t c)

Convert to `struct timespec` for interfaces that expect an absolute timeout

on a specific clock `c`. This is similar to `MakeAbsTimespec()`, but

callers usually want to use this method with `CLOCK_MONOTONIC` when

relative timeouts are requested, and when the appropriate interface expects

an absolute timeout relative to a specific clock (for example,

pthread_cond_clockwait() or sem_clockwait()). If !has_timeout(), attempts

to convert to a reasonable absolute timeout, but callers should to test

has_timeout() prefer to use a more appropriate interface.

int64_t MakeAbsNanos ()

Convert to unix epoch nanos for interfaces that expect an absolute timeout

in nanoseconds. If !has_timeout() or is_relative_timeout(), attempts to

convert to a reasonable absolute timeout, but callers should to test

has_timeout() and is_relative_timeout() and prefer to use a more

appropriate interface.

DWord InMillisecondsFromNow ()
KernelTimeout Never ()

A more explicit factory for those who prefer it.

Equivalent to `KernelTimeout()`.

Defined at line 55 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

bool has_timeout ()

Returns true if there is a timeout that will eventually expire.

Returns false if the timeout is infinite.

Defined at line 59 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

bool is_absolute_timeout ()

If `has_timeout()` is true, returns true if the timeout was provided as an

`absl::Time`. The return value is undefined if `has_timeout()` is false

because all indefinite timeouts are equivalent.

Defined at line 64 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

bool is_relative_timeout ()

If `has_timeout()` is true, returns true if the timeout was provided as an

`absl::Duration`. The return value is undefined if `has_timeout()` is false

because all indefinite timeouts are equivalent.

Defined at line 69 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

bool SupportsSteadyClock ()

Returns true if steady (aka monotonic) clocks are supported by the system.

This currently returns true on all platforms, but we have encountered

platforms that once lacked steady clock support.

Defined at line 134 of file ../../third_party/abseil-cpp/src/absl/synchronization/internal/kernel_timeout.h

std::chrono::time_point<std::chrono::system_clock> ToChronoTimePoint ()

Convert to std::chrono::time_point for interfaces that expect an absolute

timeout, like std::condition_variable::wait_until(). If !has_timeout() or

is_relative_timeout(), attempts to convert to a reasonable absolute

timeout, but callers should test has_timeout() and is_relative_timeout()

and prefer to use a more appropriate interface.

std::chrono::nanoseconds ToChronoDuration ()

Convert to std::chrono::time_point for interfaces that expect a relative

timeout, like std::condition_variable::wait_for(). If !has_timeout() or

is_absolute_timeout(), attempts to convert to a reasonable relative

timeout, but callers should test has_timeout() and is_absolute_timeout()

and prefer to use a more appropriate interface. Since the return value is a

relative duration, it should be recomputed by calling this method in the

case of a spurious wakeup.