aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorEstevan Castilho <tevo@riajuu.net>2026-08-23 03:34:07 +0000
committerEstevan Castilho <tevo@riajuu.net>2026-08-23 03:34:26 +0000
commitc452541e935295f2708271a12207f7c7ee2636bf (patch)
treedaad8008ef06c2f4ddd471f0a46cbe5f16042d16 /lib
parent26e03cf21247aeed6e6f2bfc269c4c540ca9a451 (diff)
downloadRNT-c452541e935295f2708271a12207f7c7ee2636bf.tar.gz
RNT-c452541e935295f2708271a12207f7c7ee2636bf.zip
Allow directory operations to fail if needed
Diffstat (limited to '')
-rw-r--r--lib/kernel/Namespace.ml6
-rw-r--r--lib/kernel/Namespace.mli2
-rw-r--r--lib/protocols/Directory.ml4
-rw-r--r--lib/protocols/Directory.mli8
4 files changed, 11 insertions, 9 deletions
diff --git a/lib/kernel/Namespace.ml b/lib/kernel/Namespace.ml
index 7c9cd2b..20f83f5 100644
--- a/lib/kernel/Namespace.ml
+++ b/lib/kernel/Namespace.ml
@@ -38,12 +38,14 @@ class namespace = object (self)
method list =
Atomic.get entries
|> BatMap.keys
- |> BatList.of_enum
+ |> BatFingerTree.of_enum
+ |> Result.ok
method find key =
Atomic.get entries
|> BatMap.find_opt key
|> Utilities.Option.fmap Protocols.Handle.copy
+ |> Result.ok
end
-let make () = new namespace
+let make () = Protocols.Handle.make (new namespace)
diff --git a/lib/kernel/Namespace.mli b/lib/kernel/Namespace.mli
index 3ed64a3..ec77724 100644
--- a/lib/kernel/Namespace.mli
+++ b/lib/kernel/Namespace.mli
@@ -4,4 +4,4 @@ class namespace : object
inherit Protocols.Registry.implementation
end
-val make : unit -> namespace
+val make : unit -> Protocols.Handle.t
diff --git a/lib/protocols/Directory.ml b/lib/protocols/Directory.ml
index 5b21668..0d2507e 100644
--- a/lib/protocols/Directory.ml
+++ b/lib/protocols/Directory.ml
@@ -1,6 +1,6 @@
class type implementation = object
- method list : string list
- method find : string -> Handle.t option
+ method list : (string BatFingerTree.t, Concepts.Condition.condition) result
+ method find : string -> (Handle.t option, Concepts.Condition.condition) result
end
type Handle.protocol += Directory of implementation
diff --git a/lib/protocols/Directory.mli b/lib/protocols/Directory.mli
index 5bf5277..9033235 100644
--- a/lib/protocols/Directory.mli
+++ b/lib/protocols/Directory.mli
@@ -1,13 +1,13 @@
type t
class type implementation = object
- method list : string list
- method find : string -> Handle.t option
+ method list : (string BatFingerTree.t, Concepts.Condition.condition) result
+ method find : string -> (Handle.t option, Concepts.Condition.condition) result
end
val make : #implementation -> Handle.protocol
val from : Handle.t -> t Handle.interface option
-val list : t Handle.interface -> string list
-val find : t Handle.interface -> string -> Handle.t option
+val list : t Handle.interface -> (string BatFingerTree.t, Concepts.Condition.condition) result
+val find : t Handle.interface -> string -> (Handle.t option, Concepts.Condition.condition) result