From 821a9f2e06dc042598fd4f43c198f71999fdecaf Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Mon, 19 Jun 2017 16:52:59 +0200 Subject: [PATCH] sdk: add missing files Signed-off-by: Thomas Gazagnaire --- projects/miragesdk/src/sdk/api.ml | 1 + projects/miragesdk/src/sdk/ctl.ml | 24 +++++++++++++----------- projects/miragesdk/src/sdk/ctl.mli | 7 +++++-- 3 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 projects/miragesdk/src/sdk/api.ml diff --git a/projects/miragesdk/src/sdk/api.ml b/projects/miragesdk/src/sdk/api.ml new file mode 100644 index 000000000..ab4116aac --- /dev/null +++ b/projects/miragesdk/src/sdk/api.ml @@ -0,0 +1 @@ +include Proto.MakeRPC(Capnp.BytesMessage)(Capnp_rpc_lwt) diff --git a/projects/miragesdk/src/sdk/ctl.ml b/projects/miragesdk/src/sdk/ctl.ml index cfbd49f7f..d3b3f8712 100644 --- a/projects/miragesdk/src/sdk/ctl.ml +++ b/projects/miragesdk/src/sdk/ctl.ml @@ -43,7 +43,7 @@ let errorf fmt = module Client = struct - module C = Ctl_api.Reader.Ctl + module C = Api.Reader.Ctl type error = [`Msg of string] let pp_error ppf (`Msg s) = Fmt.string ppf s @@ -51,8 +51,8 @@ module Client = struct type t = C.t Capability.t let read t path = - let module P = Ctl_api.Builder.Ctl.Read_params in - let module R = Ctl_api.Reader.Response in + let module P = Api.Builder.Ctl.Read_params in + let module R = Api.Reader.Response in let req, p = Capability.Request.create P.init_pointer in P.path_set_list p path |> ignore; Capability.call_for_value t C.read_method req >|= function @@ -65,7 +65,7 @@ module Client = struct | R.Undefined _ -> Error (`Msg "invalid return") let write t path data = - let module P = Ctl_api.Builder.Ctl.Write_params in + let module P = Api.Builder.Ctl.Write_params in let req, p = Capability.Request.create P.init_pointer in P.path_set_list p path |> ignore; P.data_set p data; @@ -74,7 +74,7 @@ module Client = struct | Error e -> errorf "error: write(%a) -> %a" pp_path path Capnp_rpc.Error.pp e let delete t path = - let module P = Ctl_api.Builder.Ctl.Delete_params in + let module P = Api.Builder.Ctl.Delete_params in let req, p = Capability.Request.create P.init_pointer in P.path_set_list p path |> ignore; Capability.call_for_value t C.delete_method req >|= function @@ -87,6 +87,8 @@ module Server = struct type op = [ `Read | `Write | `Delete ] + type t = Api.Reader.Ctl.t Capability.t + let infof fmt = Fmt.kstrf (fun msg () -> let date = Int64.of_float (Unix.gettimeofday ()) in @@ -113,11 +115,11 @@ module Server = struct | exception Not_found -> Service.fail "%s" (not_allowed key) let service ~routes db = - Ctl_api.Builder.Ctl.local @@ - object (_ : Ctl_api.Builder.Ctl.service) + Api.Builder.Ctl.local @@ + object (_ : Api.Builder.Ctl.service) method read req = - let module P = Ctl_api.Reader.Ctl.Read_params in - let module R = Ctl_api.Builder.Response in + let module P = Api.Reader.Ctl.Read_params in + let module R = Api.Builder.Response in let params = P.of_payload req in let key = P.path_get_list params in with_permission_check ~routes `Read key @@ fun () -> @@ -131,7 +133,7 @@ module Server = struct ) method write req = - let module P = Ctl_api.Reader.Ctl.Write_params in + let module P = Api.Reader.Ctl.Write_params in let params = P.of_payload req in let key = P.path_get_list params in let value = P.data_get params in @@ -142,7 +144,7 @@ module Server = struct ) method delete req = - let module P = Ctl_api.Reader.Ctl.Delete_params in + let module P = Api.Reader.Ctl.Delete_params in let params = P.of_payload req in let key = P.path_get_list params in with_permission_check ~routes `Delete key @@ fun () -> diff --git a/projects/miragesdk/src/sdk/ctl.mli b/projects/miragesdk/src/sdk/ctl.mli index ecd95c833..c93878dd0 100644 --- a/projects/miragesdk/src/sdk/ctl.mli +++ b/projects/miragesdk/src/sdk/ctl.mli @@ -13,7 +13,7 @@ module Client: sig TODO: decide if we want to support test_and_set (instead of write) and some kind of watches. *) - type t = Ctl_api.Reader.Ctl.t Capnp_rpc_lwt.Capability.t + type t = Api.Reader.Ctl.t Capnp_rpc_lwt.Capability.t (** The type for client state. *) type error @@ -45,10 +45,13 @@ val v: string -> KV.t Lwt.t module Server: sig + type t = Api.Reader.Ctl.t Capnp_rpc_lwt.Capability.t + (** The type for server state. *) + type op = [ `Read | `Write | `Delete ] (** The type for operations to perform on routes. *) - val service: routes:(string list * op list) list -> KV.t -> Ctl_api.Reader.Ctl.t Capnp_rpc_lwt.Capability.t + val service: routes:(string list * op list) list -> KV.t -> t (** [service ~routes kv] is the thread exposing the KV store [kv], holding control plane state, running inside the privileged container. [routes] are the routes exposed by the server to the