Mavryk_stdlib.Lwt_dropbox
A 'dropbox' with a single element.
val create : unit -> 'a t
Create an empty dropbox.
val put : 'a t -> 'a -> unit
put t e
puts the element e
inside the dropbox t
. If the dropbox already held an element, the old element is discarded and replaced by the new one.
val take : 'a t -> 'a Lwt.t
take t
is a promise that resolves as soon as an element is held by t
. The element is removed from t
when the promise resolves.
If t
already holds an element when take t
is called, the promise resolves immediately. Otherwise, the promise resolves when an element is put
there.
val take_with_timeout : unit Lwt.t -> 'a t -> 'a option Lwt.t
take_with_timeout timeout t
behaves like take t
except that it returns None
if timeout
resolves before an element is put
.
Note that timeout
is canceled (i.e., fails with Canceled
) if an element is put
in time (or if one is already present).
val peek : 'a t -> 'a option
peek t
is Some e
if t
holds e
and None
if t
does not hold any element.
val close : 'a t -> unit
close t
closes the dropbox t
. It terminates all the waiting reader with the exception Closed
. All further read or write will also immediately fail with Closed
, except if the dropbox is not empty when close
is called. In that case, a single (and last) take
will succeed.