mirror of
https://github.com/zap-proto/ocaml-rpc.git
synced 2026-10-30 15:04:28 +00:00
37 lines
965 B
OCaml
37 lines
965 B
OCaml
open Eio.Std
|
|
open Capnp_rpc.Std
|
|
|
|
let () =
|
|
Logs.set_level (Some Logs.Warning);
|
|
Logs.set_reporter (Logs_fmt.reporter ())
|
|
|
|
let callback_fn msg =
|
|
traceln "Callback got %S" msg
|
|
|
|
let run_client service =
|
|
Capability.with_ref (Echo.Callback.local callback_fn) @@ fun callback ->
|
|
Echo.heartbeat service "foo" callback
|
|
|
|
let connect net uri =
|
|
Switch.run @@ fun sw ->
|
|
let client_vat = Capnp_rpc_unix.client_only_vat ~sw net in
|
|
let sr = Capnp_rpc_unix.Vat.import_exn client_vat uri in
|
|
Capnp_rpc_unix.with_cap_exn sr run_client
|
|
|
|
open Cmdliner
|
|
|
|
let ( $$ ) f x = Term.(const f $ x)
|
|
|
|
let connect_addr =
|
|
let i = Arg.info [] ~docv:"ADDR" ~doc:"Address of server (capnp://...)" in
|
|
Arg.(required @@ pos 0 (some Capnp_rpc_unix.sturdy_uri) None i)
|
|
|
|
let connect_cmd env =
|
|
let doc = "run the client" in
|
|
let info = Cmd.info "connect" ~doc in
|
|
Cmd.v info (connect env#net $$ connect_addr)
|
|
|
|
let () =
|
|
exit @@ Eio_main.run @@ fun env ->
|
|
Cmd.eval (connect_cmd env)
|