()
| 28 | |
| 29 | #[actix_web::main] |
| 30 | async fn main() -> Result<(), Box<dyn std::error::Error>> { |
| 31 | let args = CosdataArgs::parse(); |
| 32 | env_logger::init_from_env(env_logger::Env::default().default_filter_or("info")); |
| 33 | let config = config_loader::load_config()?; |
| 34 | // Create context |
| 35 | let context = Data::new(AppContext::new(config, args)?); |
| 36 | |
| 37 | // Start gRPC server |
| 38 | #[cfg(feature = "grpc-server")] |
| 39 | let grpc_context = context.clone().into_inner(); |
| 40 | |
| 41 | #[cfg(feature = "grpc-server")] |
| 42 | actix_web::rt::spawn(async move { |
| 43 | const DEFAULT_GRPC_PORT: u16 = 50051; |
| 44 | if let Err(e) = grpc::server::start_grpc_server(grpc_context, DEFAULT_GRPC_PORT).await { |
| 45 | log::error!("gRPC server error: {}", e); |
| 46 | } |
| 47 | }); |
| 48 | |
| 49 | if let Err(e) = run_actix_server_with_context(context).await { |
| 50 | log::error!("HTTP server error: {}", e); |
| 51 | } |
| 52 | |
| 53 | Ok(()) |
| 54 | } |
nothing calls this directly
no test coverage detected