Module Async_durable
include Async_durable__.Durable
val create : to_create:(unit -> 'a Async_kernel.Deferred.Or_error.t) -> is_broken:('a -> bool) -> ?to_rebuild:('a -> 'a Async_kernel.Deferred.Or_error.t) -> unit -> 'a t
to_create
tells the Durable how to build a fresh 'a value.is_broken
tests whether the current 'a value can be used. It should return true when you want the Durable to attempt to rebuild or recreate the 'a.to_rebuild
Is called on the broken 'a. It should return a "fixed" 'a.When the function
with_
below is called, it usesis_broken
to test if the current Durable value is broken. If not, it calls eitherto_create
orto_rebuild
. Ifto_rebuild
is None (as in the default case), the Durable will try to create a fresh value withto_create
.create
does not create the Durable value. The first call toto_create
will be made on the first use ofwith_
.
val create_or_fail : to_create:(unit -> 'a Async_kernel.Deferred.Or_error.t) -> is_broken:('a -> bool) -> ?to_rebuild:('a -> 'a Async_kernel.Deferred.Or_error.t) -> unit -> 'a t Core_kernel.Or_error.t Async_kernel.Deferred.t
create_or_fail
immediately callsto_create
, returning an error if that first attempt fails. This function will also return an error if the initial durable value is broken.
val with_ : 'a t -> f:('a -> 'b Async_kernel.Deferred.Or_error.t) -> 'b Async_kernel.Deferred.Or_error.t
with_
applies the given function to the Durable value ifis_broken
returns false. Ifis_broken
return true, it first callsto_create
orto_rebuild
. This function will return an error if eitherto_create
orto_rebuild
returns an error, or if the rebuilt or recreated durable value is broken.is_broken
is checked immediately before callingf
.We will only make one attempt to rebuild a broken value. If a call to
to_rebuild
returnsError _
, we will drop the previously built value. The next call towith_
will callto_create
.with_
will raise iff
raises.
module Subscription = Async_durable__.Durable_subscription
module Pipe_rpc = Async_durable__.Durable_pipe_rpc
module State_rpc = Async_durable__.Durable_state_rpc