edition = "2024"
[dependencies]
+axum = "0.8.8"
serde = { version = "1", features = ["derive"]}
serde_json = "1"
+tokio = { version = "1.50.0", features = ["full"] }
use std::error::Error;
-fn main() -> Result<(), Box<dyn Error>> {
+#[tokio::main]
+async fn main() -> Result<(), Box<dyn Error>> {
let args: Vec<String> = std::env::args().collect();
if args.len() < 2 {
return Err(format!("Usage: {} <race-config.json>", args[0]).into());
eprintln!("Race: {}", config.name);
+ let bind = "0.0.0.0:3000";
+ eprintln!("Listening on {}", bind);
+
+ let listener = tokio::net::TcpListener::bind(&bind).await?;
+
+ let app = axum::Router::new();
+
+ axum::serve(listener, app)
+ .with_graceful_shutdown(async move {
+ tokio::signal::ctrl_c().await.ok();
+ eprintln!("\nShutting down.");
+ })
+ .await?;
+
Ok(())
}