diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/protocols/Handle.ml | 1 | ||||
| -rw-r--r-- | lib/protocols/Handle.mli | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/lib/protocols/Handle.ml b/lib/protocols/Handle.ml index cdadd4a..c8480a6 100644 --- a/lib/protocols/Handle.ml +++ b/lib/protocols/Handle.ml @@ -47,4 +47,5 @@ let release ({valid; _} as handle) = valid := false; o#release +let releasing handle f = Fun.protect ~finally:(fun () -> release handle) f let require f h = Option.to_result ~none:(Error.unimplemented_protocol (to_string h)) (f h) diff --git a/lib/protocols/Handle.mli b/lib/protocols/Handle.mli index a354257..5c74521 100644 --- a/lib/protocols/Handle.mli +++ b/lib/protocols/Handle.mli @@ -17,6 +17,7 @@ val invoke : 'a interface -> ('a -> 'b) -> 'b val copy : t -> t option val equal : t -> t -> bool val release : t -> unit +val releasing : t -> (unit -> 'a) -> 'a val hash : t -> Concepts.Hash.hash val protocols : t -> protocol list val to_string : t -> string |
