Module Async_extended.Signal

type 'a t
val create : ?⁠eq:('a ‑> 'a ‑> bool) ‑> 'a ‑> 'a t
val close : 'a t ‑> unit
val get : 'a t ‑> 'a
val set : 'a t ‑> 'a ‑> unit
val send : 'a t ‑> 'a ‑> unit
val upon : 'a t ‑> f:('a ‑> unit) ‑> unit
val next : 'a t ‑> 'a Async.Deferred.t

next t returns the next value in t

val on_update : 'a t ‑> ?⁠stop_condition:('a ‑> bool) ‑> ('a ‑> unit) ‑> unit
val register : 'a t ‑> f:('a ‑> Synccast.interest_status Async.Deferred.t) ‑> unit
val register_init : 'a t ‑> init:(unit ‑> unit Async.Deferred.t) ‑> f:('a ‑> Synccast.interest_status Async.Deferred.t) ‑> unit
val register_self_init : 'a t ‑> f:('a ‑> Synccast.interest_status Async.Deferred.t) ‑> unit

register_self_init t ~f same as register init, but uses the function f as the initialization function

val create_repeater : ?⁠randomize:float ‑> ?⁠stop_condition:(Core.Time.t ‑> bool) ‑> Core.Time.Span.t ‑> Core.Time.t t