module Events:sig
..end
Events
is for keeping a set of events that need to happen in the future. One can
add and remove events, and update the time to find out the events that need to
happen.module Event:sig
..end
type 'a
t
val invariant : 'a t -> unit
val create : now:Core.Std.Time.t -> 'a t
val iter : 'a t -> f:('a Event.t -> unit) -> unit
val is_empty : 'a t -> bool
val now : 'a t -> Core.Std.Time.t
val advance_clock : 'a t -> to_:Core.Std.Time.t -> [ `Not_in_the_future | `Ok of 'a list ]
advance_clock t ~to_
advances the clock to to_
, and returns `Ok values
, with
values for all events in t
with at <= to_
.
advance_clock
returns `Not_in_the_future
if Time.(<=) to_ (now t)
val add : 'a t ->
at:Core.Std.Time.t -> 'a -> [ `Not_in_the_future | `Ok of 'a Event.t ]
add t ~at value
adds a new event e
to t
with the specified value
, and returns
`Ok e
. add
returns `Not_in_the_future
if Time.(<=) at (now t)
.val remove : 'a t -> 'a Event.t -> [ `Not_present | `Removed ]
remove t event
removes event
from t
and returns `Removed
, if event
is
present in t
, else it returns `Not_present
.val next_upcoming : 'a t -> 'a Event.t option
next_upcoming t
returns the next upcoming event in t
, if any.val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t