diff options
author | hozan23 <hozan23@karyontech.net> | 2024-05-27 00:59:23 +0200 |
---|---|---|
committer | hozan23 <hozan23@karyontech.net> | 2024-05-27 00:59:23 +0200 |
commit | d1c816660c0583db33d160e2ef3e980bef0d5a85 (patch) | |
tree | 9eb06e6dbfbe34c6c2f85eee8d2e337b155be103 /p2p/examples/monitor/src/client.rs | |
parent | 385d53ec53e750e342cce78edb793958edf5133e (diff) |
p2p: WIP rpc server implementation for the p2p monitor
Diffstat (limited to 'p2p/examples/monitor/src/client.rs')
-rw-r--r-- | p2p/examples/monitor/src/client.rs | 48 |
1 files changed, 48 insertions, 0 deletions
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; + }); +} |