aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/kernel/Initialization.ml12
-rw-r--r--lib/kernel/Initialization.mli5
2 files changed, 15 insertions, 2 deletions
diff --git a/lib/kernel/Initialization.ml b/lib/kernel/Initialization.ml
index d213b66..ae041fc 100644
--- a/lib/kernel/Initialization.ml
+++ b/lib/kernel/Initialization.ml
@@ -1,12 +1,22 @@
module Make (S : Abstract.Storage.STORAGE) = struct
module BM = BranchManager.Make (S)
- let initialize conn =
+ let initialize ?(evaluators = []) conn =
let open Utilities.Result in
let open Protocols in
let root = Namespace.make () in
let registry = Registry.from root |> Option.get in
let* branch_manager = BM.make conn "rnt-head" in
let* _ = Registry.update registry "branch" None (Some branch_manager) in
+ let evaluator_namespace = Namespace.make () in
+ let evaluator_registry = Registry.from evaluator_namespace |> Option.get in
+ let* _ =
+ List.fold_left
+ (fun acc (name, handle) ->
+ let* _ = acc in
+ Registry.update evaluator_registry name None (Some handle))
+ (Ok true) evaluators
+ in
+ let* _ = Registry.update registry "evaluator" None (Some evaluator_namespace) in
Ok root
end
diff --git a/lib/kernel/Initialization.mli b/lib/kernel/Initialization.mli
index 104d523..926bbd8 100644
--- a/lib/kernel/Initialization.mli
+++ b/lib/kernel/Initialization.mli
@@ -1,3 +1,6 @@
module Make (S : Abstract.Storage.STORAGE) : sig
- val initialize : S.connection -> (Protocols.Handle.t, Concepts.Condition.condition) result
+ val initialize :
+ ?evaluators:(string * Protocols.Handle.t) list ->
+ S.connection ->
+ (Protocols.Handle.t, Concepts.Condition.condition) result
end