Module Timing_wheel_float

module Timing_wheel_float: sig .. end
A timing wheel in which time is represented by Time.t, i.e. a floating-point number of seconds since the epoch.

The implementation uses Timing_wheel_ns, and rounds all Time.t values to the nearest microsecond before feeding them to the underlying timing wheel. Thus, it is possible that Time.( < ) (Alarm.at t (add t ~at a)) at, with the alarm's at being up to a microsecond earlier than requested. However, because the alarm precision of the underlying timing wheel is an integer number of microseconds, we are still guaranteed when an alarm fires that at < now t, i.e. the timing-wheel's clock is beyond the time requested for the alarm to fire.

Due to floating-point arithmetic, the guarantee that alarms don't fire too late needs to be weakened slightly to use >= rather than > . For all alarms a in t:

      Alarm.at a >= now t - alarm_precision t
    


include Core_kernel.Timing_wheel_intf.Timing_wheel