diff options
Diffstat (limited to 'p2p/examples/monitor/src/main.rs')
-rw-r--r-- | p2p/examples/monitor/src/main.rs | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/p2p/examples/monitor/src/main.rs b/p2p/examples/monitor/src/main.rs deleted file mode 100644 index 78ada48..0000000 --- a/p2p/examples/monitor/src/main.rs +++ /dev/null @@ -1,108 +0,0 @@ -mod service; -mod shared; - -use std::sync::Arc; - -use clap::Parser; -use smol::{channel, Executor}; - -use karyon_jsonrpc::Server; -use karyon_p2p::{ - endpoint::{Endpoint, Port}, - keypair::{KeyPair, KeyPairType}, - Backend, Config, -}; - -use service::MonitorRPC; -use shared::run_executor; - -#[derive(Parser)] -#[command(author, version, about, long_about = None)] -struct Cli { - /// Optional list of bootstrap peers to start the seeding process. - #[arg(short)] - bootstrap_peers: Vec<Endpoint>, - - /// RPC server endpoint. - #[arg(short)] - rpc_endpoint: Endpoint, - - /// Optional list of peer endpoints for manual connections. - #[arg(short)] - peer_endpoints: Vec<Endpoint>, - - /// Optional endpoint for accepting incoming connections. - #[arg(short)] - listen_endpoint: Option<Endpoint>, - - /// Optional TCP/UDP port for the discovery service. - #[arg(short)] - discovery_port: Option<Port>, -} - -fn main() { - env_logger::init(); - - let cli = Cli::parse(); - - let key_pair = KeyPair::generate(&KeyPairType::Ed25519); - - // Create the configuration for the backend. - let config = Config { - listen_endpoint: cli.listen_endpoint, - peer_endpoints: cli.peer_endpoints, - bootstrap_peers: cli.bootstrap_peers, - discovery_port: cli.discovery_port.unwrap_or(0), - enable_monitor: true, - ..Default::default() - }; - - // Create a new Executor - let ex = Arc::new(Executor::new()); - - // Create a new Backend - let backend = Backend::new(&key_pair, config, ex.clone().into()); - - let (ctrlc_s, ctrlc_r) = channel::unbounded(); - let handle = move || ctrlc_s.try_send(()).unwrap(); - ctrlc::set_handler(handle).unwrap(); - - let exc = ex.clone(); - run_executor( - async { - // RPC service - let service = MonitorRPC::new(backend.clone(), exc.clone()); - - // Create rpc server - let server = Server::builder(cli.rpc_endpoint) - .expect("Create server builder") - .service(service.clone()) - .pubsub_service(service.clone()) - .build_with_executor(exc.clone().into()) - .await - .expect("Build rpc server"); - - // Run the RPC server - server.start(); - - // Run the RPC Service - service.run().await.expect("Run monitor rpc service"); - - // Run the backend - backend.run().await.expect("Run p2p backend"); - - // Wait for ctrlc signal - ctrlc_r.recv().await.expect("Wait for ctrlc signal"); - - // Shutdown the backend - backend.shutdown().await; - - // Shutdown the RPC server - server.shutdown().await; - - // Shutdown the RPC service - service.shutdown().await; - }, - ex, - ); -} |