From d1c816660c0583db33d160e2ef3e980bef0d5a85 Mon Sep 17 00:00:00 2001 From: hozan23 Date: Mon, 27 May 2024 00:59:23 +0200 Subject: p2p: WIP rpc server implementation for the p2p monitor --- p2p/examples/monitor/src/client.rs | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 p2p/examples/monitor/src/client.rs (limited to 'p2p/examples/monitor/src/client.rs') diff --git a/p2p/examples/monitor/src/client.rs b/p2p/examples/monitor/src/client.rs new file mode 100644 index 0000000..d4970eb --- /dev/null +++ b/p2p/examples/monitor/src/client.rs @@ -0,0 +1,48 @@ +use clap::Parser; + +use karyon_jsonrpc::Client; +use karyon_p2p::endpoint::Endpoint; + +#[derive(Parser)] +#[command(author, version, about, long_about = None)] +struct Cli { + /// RPC server endpoint. + #[arg(short)] + rpc_endpoint: Endpoint, +} + +fn main() { + smol::block_on(async { + env_logger::init(); + let cli = Cli::parse(); + + let rpc = Client::builder(cli.rpc_endpoint) + .expect("Create rpc client builder") + .build() + .await + .expect("Create rpc client"); + + let (_, sub) = rpc + .subscribe("MonitorRPC.conn_subscribe", ()) + .await + .expect("Subscribe to connection events"); + + let (_, sub2) = rpc + .subscribe("MonitorRPC.peer_pool_subscribe", ()) + .await + .expect("Subscribe to peer pool events"); + + smol::spawn(async move { + loop { + let _event = sub.recv().await.expect("Receive connection event"); + } + }) + .detach(); + + smol::spawn(async move { + loop { + let _event = sub2.recv().await.expect("Receive peer pool event"); + } + }).await; + }); +} -- cgit v1.2.3