include Bin_prot.Binable.S1 with type 'a t := 'a t
val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.t
type 'a ivar = 'a t
include Core_kernel.Invariant.S1 with type 'a t := 'a t
val invariant : ('a -> unit) -> 'a t -> unit
val create : unit -> 'a t
create ()
returns an empty ivar.
val create_full : 'a -> 'a t
create_full v
returns an ivar filled with v
.
val fill : 'a t -> 'a -> unit
fill t v
fills t
with value v
if t
was empty. If t
was full, fill
raises an exception. It is guaranteed that immediately after calling fill t
, is_some
(Deferred.peek (read t))
.
val fill_if_empty : 'a t -> 'a -> unit
fill_if_empty t v
fills t
with v
if t
is currently empty. If t
is full, then fill_if_empty
does nothing.
val is_empty : 'a t -> bool
is_empty t
returns true if t
is empty.
val is_full : 'a t -> bool
is_full t
returns true if t
is full.
val read : 'a t -> 'a Async_kernel__Types.Deferred.t
read t
returns a deferred that becomes enabled with value v
after the ivar is filled with v
.
val peek : 'a t -> 'a option
peek t
returns Some v
iff t
is full with value v
.
val value_exn : 'a t -> 'a
value_exn t
returns v
if t
is full with value v
, and raises otherwise.
val has_handlers : _ t -> bool
has_handlers t
returns true
if t
has handlers waiting on read t
.