Module Resource.Make_simple

Wrap a resource that does not natively support a has_close_started operation in a simple record to add such tracking.

Parameters

Signature

include Resource_cache__.Resource_intf.S
module Key : sig ... end
type t
val open_ : Key.t -> Common_args.t -> t Async_kernel.Deferred.Or_error.t
val close : t -> unit Async_kernel.Deferred.t
val close_finished : t -> unit Async_kernel.Deferred.t

When close_finished is determined, the resource will not be reused by a new job. If no job is currently using this resource, the resource will be dropped from the cache immediately. If there is a currently running job with this resource, the resource will be dropped from the cache once that job finishes.

val has_close_started : t -> bool

has_close_started t should return true iff close t has been called, even if close_finished has not been determined.

type resource = R.t
val underlying : t -> resource