this repo has no description
1open Capnp_rpc
2
3let v sr ~add_user ~remove_user =
4 let module X = Raw.Service.Admin in
5 Capnp_rpc.Persistence.with_sturdy_ref sr X.local
6 @@ object
7 inherit X.service
8
9 method add_user_impl params release_param_caps =
10 let open X.AddUser in
11 let id = Params.user_get params in
12 release_param_caps ();
13 let cap = add_user id in
14 let response, results = Service.Response.create Results.init_pointer in
15 Results.cap_set results (Some cap);
16 Capability.dec_ref cap;
17 Service.return response
18
19 method remove_user_impl params release_param_caps =
20 let open X.RemoveUser in
21 let id = Params.user_get params in
22 release_param_caps ();
23 remove_user id;
24 Service.return @@ Service.Response.create_empty ()
25 end
26
27module X = Raw.Client.Admin
28
29type t = X.t Capability.t
30
31let add_user t user =
32 let open X.AddUser in
33 let request, params = Capability.Request.create Params.init_pointer in
34 Params.user_set params user;
35 Capability.call_for_caps t method_id request Results.cap_get_pipelined
36
37let remove_user t user =
38 let open X.RemoveUser in
39 let request, params = Capability.Request.create Params.init_pointer in
40 Params.user_set params user;
41 let _ : _ StructStorage.reader_t =
42 Capability.call_for_value_exn t method_id request
43 in
44 ()