lite-rpc/src/main.rs

57 lines
1.3 KiB
Rust
Raw Normal View History

2022-12-16 18:35:49 -08:00
use std::str::FromStr;
2023-01-09 22:40:43 -08:00
use std::time::Duration;
2022-12-21 05:31:43 -08:00
use anyhow::Context;
2022-11-30 07:56:41 -08:00
use clap::Parser;
2022-12-21 05:31:43 -08:00
use lite_rpc::{bridge::LiteBridge, cli::Args};
2022-12-16 18:35:49 -08:00
use reqwest::Url;
use simplelog::*;
#[tokio::main]
pub async fn main() -> anyhow::Result<()> {
TermLogger::init(
LevelFilter::Info,
Config::default(),
TerminalMode::Mixed,
ColorChoice::Auto,
)?;
let Args {
rpc_addr,
ws_addr,
2023-01-09 22:40:43 -08:00
tx_batch_size,
2023-01-05 02:54:00 -08:00
lite_rpc_ws_addr,
lite_rpc_http_addr,
2023-01-09 22:40:43 -08:00
tx_batch_interval_ms,
2023-01-10 06:56:41 -08:00
clean_interval_ms,
2022-12-16 18:35:49 -08:00
} = Args::parse();
2023-01-09 22:40:43 -08:00
let tx_batch_interval_ms = Duration::from_millis(tx_batch_interval_ms);
2023-01-10 06:56:41 -08:00
let clean_interval_ms = Duration::from_millis(clean_interval_ms);
2023-01-09 22:40:43 -08:00
let light_bridge = LiteBridge::new(Url::from_str(&rpc_addr).unwrap(), &ws_addr).await?;
2022-12-16 18:35:49 -08:00
2023-01-05 02:54:00 -08:00
let services = light_bridge
2023-01-09 22:40:43 -08:00
.start_services(
lite_rpc_http_addr,
lite_rpc_ws_addr,
tx_batch_size,
tx_batch_interval_ms,
2023-01-10 06:56:41 -08:00
clean_interval_ms,
2023-01-09 22:40:43 -08:00
)
2023-01-05 02:54:00 -08:00
.await?;
2023-01-09 22:40:43 -08:00
2022-12-21 05:31:43 -08:00
let services = futures::future::try_join_all(services);
2022-12-16 18:35:49 -08:00
let ctrl_c_signal = tokio::signal::ctrl_c();
tokio::select! {
services = services => {
2022-12-21 05:31:43 -08:00
services.context("Some services exited unexpectedly")?;
2022-12-16 18:35:49 -08:00
}
2022-12-21 05:31:43 -08:00
_ = ctrl_c_signal => {}
}
2022-12-21 05:31:43 -08:00
Ok(())
}