aboutsummaryrefslogtreecommitdiffstats
path: root/lib/protocols/Handle.ml
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-10-09 01:16:35 -0300
committerMarcos Magueta <maguetamarcos@gmail.com>2026-10-09 01:16:35 -0300
commit254d106c92dcabcdeb83a5d0141deca22ffb79de (patch)
treec99478aed6730365fcdd907b7bd777e3b7e2237a /lib/protocols/Handle.ml
parent4896005e5d156e8a590b12946a54507daa895686 (diff)
downloadRNT-254d106c92dcabcdeb83a5d0141deca22ffb79de.tar.gz
RNT-254d106c92dcabcdeb83a5d0141deca22ffb79de.zip
admission protocol for multigroup denial checks
Diffstat (limited to '')
-rw-r--r--lib/protocols/Handle.ml1
-rw-r--r--lib/protocols/Handle.mli1
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