use std::net::SocketAddr; mod grpc; mod config; use crate::config::CONFIG; use log::{debug, info}; use sched::LoginRequest; pub mod sched { tonic::include_proto!("sched"); } #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { std::env::set_var("RUST_LOG", CONFIG.log.level.clone()); pretty_env_logger::init(); use colorful::Color; use colorful::Colorful; use colorful::HSL; println!(" {}", "+--------------+".color(Color::LightBlue)); println!(" {}", "| 予定 |".color(Color::LightPink1)); println!( " {}", "+--------------+".color(colorful::RGB::new(252, 252, 252)) ); println!(" {}", "YOITEI SCHEDULER".color(Color::LightPink1)); println!(" {}", " COMPUTE NODE\n".color(Color::LightBlue)); let server_addr = "http://[::1]:50051"; let addr: SocketAddr = "[::1]:50053".parse()?; let data = sched::data_client::DataClient::connect(server_addr).await?; let mut auth = sched::auth_client::AuthClient::connect(server_addr).await?; // Start server here let alive_check_server = alive_check_serve(addr); debug!( "{:#?}", auth.login(tonic::Request::new(LoginRequest { node_id: "compute-1".to_string(), })) .await? ); // Await server at end alive_check_server.await?; Ok(()) } async fn alive_check_serve(addr: SocketAddr) -> Result<(), Box<dyn std::error::Error>> { use grpc::AliveCheckService; use sched::alive_check_server::AliveCheckServer; use tokio::sync::mpsc; use tokio::task; use tonic::transport::Server; let (tx, mut rx) = mpsc::channel::<Server>(100); task::spawn(async move { info!( "Starting Alive Check gRPC server on: http://{}", addr.to_string() ); let alive_check_service = AliveCheckService::default(); Server::builder() .add_service(AliveCheckServer::new(alive_check_service)) .serve(addr) .await .unwrap(); }); while let Some(msg) = rx.recv().await { println!("REC: {:?}", msg); } Ok(()) }