On a quest for agency in Bellairs

More broken code

Changed files
+9 -14
mvp
ocaml
client
server
+7 -13
mvp/ocaml/client/client.ml
···
open Eio.Std
module API = Schema.Storage.MakeRPC (Capnp_rpc)
-
let pp_file ppf file =
-
let e = Capability.problem file in
-
Fmt.pf ppf "[%a:%a]" Capnp_rpc.Capability.pp file
-
Fmt.(option Capnp_rpc.Exception.pp)
-
e
-
module Storage :
Bellairs.Storage
with type file = API.Client.File.t Capability.t
···
let client = Capnp_rpc_unix.Vat.import_exn client_vat uri in
Capnp_rpc_unix.with_cap_exn client f
-
let pp_entry ppf entry =
-
Fmt.pf ppf "%s:%a" entry.Storage.name pp_file entry.file
let ls net uri =
connect net uri @@ fun dir ->
···
let create net uri name =
connect net uri @@ fun dir ->
-
let file = Storage.create dir name in
-
Fmt.pr "Created file '%s': %a\n" name pp_file file
let open_file net uri name =
connect net uri @@ fun dir ->
-
let file = Storage.open_ dir name in
-
Fmt.pr "Opened file '%s': %a\n" name pp_file file
let delete net uri name =
connect net uri @@ fun dir ->
Storage.delete dir name;
-
Fmt.pr "Deleted file '%s'\n" name
let size net uri name =
connect net uri @@ fun dir ->
···
open Eio.Std
module API = Schema.Storage.MakeRPC (Capnp_rpc)
module Storage :
Bellairs.Storage
with type file = API.Client.File.t Capability.t
···
let client = Capnp_rpc_unix.Vat.import_exn client_vat uri in
Capnp_rpc_unix.with_cap_exn client f
+
let pp_name ppf name = Fmt.pf ppf "%a" Fmt.(styled `Bold string) name
+
let pp_entry ppf entry = pp_name ppf entry.Storage.name
let ls net uri =
connect net uri @@ fun dir ->
···
let create net uri name =
connect net uri @@ fun dir ->
+
let _file = Storage.create dir name in
+
Fmt.pr "Created file '%a'\n" pp_name name
let open_file net uri name =
connect net uri @@ fun dir ->
+
let _file = Storage.open_ dir name in
+
Fmt.pr "Opened file <raw>\n"
let delete net uri name =
connect net uri @@ fun dir ->
Storage.delete dir name;
+
Fmt.pr "Deleted file '%a'\n" pp_name name
let size net uri name =
connect net uri @@ fun dir ->
+2 -1
mvp/ocaml/server/impl.ml
···
-
(* TODO: put the real implementation here -- for now it's just an in-memory database *)
type file = { content : string; size : int64 }
type dir = (string, file) Hashtbl.t
···
+
(* TODO: put the real implementation here -- for now it's just an
+
in-memory database *)
type file = { content : string; size : int64 }
type dir = (string, file) Hashtbl.t