aboutsummaryrefslogtreecommitdiffstats
path: root/lib/protocols/Registry.ml
diff options
context:
space:
mode:
authorEstevan Castilho <tevo@riajuu.net>2026-08-29 01:14:27 +0000
committerEstevan Castilho <tevo@riajuu.net>2026-08-29 01:14:27 +0000
commitf87767c3e5b0f1920a6179d5cd0d4613cca92658 (patch)
treec3b6c832b32447b07f221132b07e995d58c920cb /lib/protocols/Registry.ml
parentb2a9404cbfa4e38391d345e137f6dbda963d960d (diff)
downloadRNT-f87767c3e5b0f1920a6179d5cd0d4613cca92658.tar.gz
RNT-f87767c3e5b0f1920a6179d5cd0d4613cca92658.zip
Make registration more like a CAS
Diffstat (limited to '')
-rw-r--r--lib/protocols/Registry.ml7
-rw-r--r--lib/protocols/Registry.mli6
2 files changed, 4 insertions, 9 deletions
diff --git a/lib/protocols/Registry.ml b/lib/protocols/Registry.ml
index 4c47001..f01f06b 100644
--- a/lib/protocols/Registry.ml
+++ b/lib/protocols/Registry.ml
@@ -1,6 +1,5 @@
class type implementation = object
- method register : string -> Handle.t -> (unit, Concepts.Condition.condition) result
- method unregister : string -> (unit, Concepts.Condition.condition) result
+ method update : string -> Handle.t option -> Handle.t option -> (bool, Concepts.Condition.condition) result
end
type Handle.protocol += Registry of implementation
@@ -11,6 +10,4 @@ let make impl = Registry (impl :> implementation)
let from handle = Handle.into handle (function Registry impl -> Some impl | _ -> None)
-let register i key value = Handle.invoke i (fun o -> o#register key value)
-
-let unregister i key = Handle.invoke i (fun o -> o#unregister key)
+let update i key reference value = Handle.invoke i (fun o -> o#update key reference value)
diff --git a/lib/protocols/Registry.mli b/lib/protocols/Registry.mli
index 175ebed..3390167 100644
--- a/lib/protocols/Registry.mli
+++ b/lib/protocols/Registry.mli
@@ -1,13 +1,11 @@
type t
class type implementation = object
- method register : string -> Handle.t -> (unit, Concepts.Condition.condition) result
- method unregister : string -> (unit, Concepts.Condition.condition) result
+ method update : string -> Handle.t option -> Handle.t option -> (bool, Concepts.Condition.condition) result
end
val make : #implementation -> Handle.protocol
val from : Handle.t -> t Handle.interface option
-val register : t Handle.interface -> string -> Handle.t -> (unit, Concepts.Condition.condition) result
-val unregister : t Handle.interface -> string -> (unit, Concepts.Condition.condition) result
+val update : t Handle.interface -> string -> Handle.t option -> Handle.t option -> (bool, Concepts.Condition.condition) result