Files
Thomas Leonard 48d675b10e Initial Eio port
This switches capnp-rpc from Lwt to Eio. One particularly nice side
effect of this is that `Service.return_lwt` has gone, as there is no
distinction now between concurrent and non-concurrent service methods.
2024-11-16 12:09:07 +00:00

32 lines
1008 B
OCaml
Executable File

module Api = Echo_api.MakeRPC(Capnp_rpc)
open Capnp_rpc.Std
(*-- Server ----------------------------------------*)
let local =
let module Echo = Api.Service.Echo in
Echo.local @@ object
inherit Echo.service
method ping_impl params release_param_caps =
let open Echo.Ping in
let msg = Params.msg_get params in
release_param_caps ();
let resp = "echo:" ^ msg in
let message_size = 100 + String.length resp in
let response, results = Service.Response.create ~message_size Results.init_pointer in
Results.reply_set results resp;
Service.return response
end
(*-- Client ----------------------------------------*)
module Echo = Api.Client.Echo
let ping t msg =
let open Echo.Ping in
let message_size = 200 + String.length msg in (* (rough estimate) *)
let request, params = Capability.Request.create ~message_size Params.init_pointer in
Params.msg_set params msg;
Capability.call_for_value_exn t method_id request |> Results.reply_get