this repo has no description
at main 1.7 kB view raw
1open Capnp_rpc 2 3let or_fail = function 4 | Ok v -> v 5 | Error (`Capnp e) -> Fmt.failwith "%a" Capnp_rpc.Error.pp e 6 7let local ~stdin ~stdout ~stderr = 8 let module X = Raw.Service.Session in 9 X.local 10 @@ object 11 inherit X.service 12 13 method stdout_impl _ release_param_caps = 14 let open X.Stdout in 15 release_param_caps (); 16 let s = stdout () in 17 let response, results = Service.Response.create Results.init_pointer in 18 Results.output_set results s; 19 Service.return response 20 21 method stderr_impl _ release_param_caps = 22 let open X.Stderr in 23 release_param_caps (); 24 let s = stderr () in 25 let response, results = Service.Response.create Results.init_pointer in 26 Results.output_set results s; 27 Service.return response 28 29 method stdin_impl params release_param_caps = 30 let open X.Stdin in 31 let data = Params.input_get params in 32 release_param_caps (); 33 stdin data; 34 Service.return_empty () 35 end 36 37module X = Raw.Client.Session 38 39type t = X.t Capability.t 40 41let stdout t () = 42 let open X.Stdout in 43 let request = Capability.Request.create_no_args () in 44 let result = Capability.call_for_value t method_id request |> or_fail in 45 Results.output_get result 46 47let stderr t () = 48 let open X.Stderr in 49 let request = Capability.Request.create_no_args () in 50 let result = Capability.call_for_value t method_id request |> or_fail in 51 Results.output_get result 52 53let stdin t input = 54 let open X.Stdin in 55 let request, params = Capability.Request.create Params.init_pointer in 56 Params.input_set params input; 57 Capability.call_for_unit t method_id request |> or_fail