From d6d143b3c261f6debded903528600c6726df495b Mon Sep 17 00:00:00 2001 From: Andy Killorin <37423245+Speedy6451@users.noreply.github.com> Date: Wed, 27 Dec 2023 20:14:37 -0600 Subject: [PATCH] switch to ron --- server/Cargo.toml | 2 ++ server/src/main.rs | 28 ++++++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index 772de11..1f517ae 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -41,3 +41,5 @@ tracing-opentelemetry = "0.22" opentelemetry-jaeger = { version = "0.20", features = ["rt-tokio"] } opentelemetry_sdk = { version = "0.21.1", features = ["trace"] } memoize = "0.4.2" +tracing-appender = "0.2.3" +ron = "0.8.1" diff --git a/server/src/main.rs b/server/src/main.rs index cf19782..f41e971 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -12,6 +12,7 @@ use blocks::{SharedWorld, Position, World, }; use depot::Depots; use opentelemetry::global; use opentelemetry_sdk::{runtime::Tokio, trace::BatchConfig}; +use ron::ser::PrettyConfig; use tower_http::trace::TraceLayer; use tracing::{info, span, Level}; use rstar::RTree; @@ -154,15 +155,18 @@ async fn write_to_disk(state: &LiveState) -> anyhow::Result<()> { }; let depots = state.depots.clone().to_vec().await; - let turtles = serde_json::to_string_pretty(&turtles)?; + let pretty = PrettyConfig::default() + .struct_names(true); + + let turtles = ron::ser::to_string_pretty(&turtles, pretty.clone())?; let world = bincode::serialize(&*state.world.clone().lock().await)?; - let depots = serde_json::to_string_pretty(&depots)?; - let tasks = serde_json::to_string_pretty(tasks)?; + let depots = ron::ser::to_string_pretty(&depots, pretty.clone())?; + let tasks = ron::ser::to_string_pretty(tasks, pretty.clone())?; let path = &SAVE.get().unwrap(); - tokio::fs::write(path.join("turtles.json"), turtles).await?; - tokio::fs::write(path.join("depots.json"), depots).await?; - tokio::fs::write(path.join("tasks.json"), tasks).await?; + tokio::fs::write(path.join("turtles.ron"), turtles).await?; + tokio::fs::write(path.join("depots.ron"), depots).await?; + tokio::fs::write(path.join("tasks.ron"), tasks).await?; tokio::fs::write(path.join("world.bin"), world).await?; Ok(()) } @@ -170,10 +174,10 @@ async fn write_to_disk(state: &LiveState) -> anyhow::Result<()> { async fn read_from_disk(kill: watch::Sender) -> anyhow::Result { let turtles: Vec = match tokio::fs::OpenOptions::new() .read(true) - .open(SAVE.get().unwrap().join("turtles.json")) + .open(SAVE.get().unwrap().join("turtles.ron")) .await { - tokio::io::Result::Ok(file) => serde_json::from_reader(file.into_std().await)?, + tokio::io::Result::Ok(file) => ron::de::from_reader(file.into_std().await)?, tokio::io::Result::Err(e) => match e.kind() { ErrorKind::NotFound => Vec::new(), _ => panic!(), @@ -182,10 +186,10 @@ async fn read_from_disk(kill: watch::Sender) -> anyhow::Result let depots = match tokio::fs::OpenOptions::new() .read(true) - .open(SAVE.get().unwrap().join("depots.json")) + .open(SAVE.get().unwrap().join("depots.ron")) .await { - tokio::io::Result::Ok(file) => serde_json::from_reader(file.into_std().await)?, + tokio::io::Result::Ok(file) => ron::de::from_reader(file.into_std().await)?, tokio::io::Result::Err(e) => match e.kind() { ErrorKind::NotFound => Vec::new(), _ => panic!(), @@ -194,10 +198,10 @@ async fn read_from_disk(kill: watch::Sender) -> anyhow::Result let scheduler = match tokio::fs::OpenOptions::new() .read(true) - .open(SAVE.get().unwrap().join("tasks.json")) + .open(SAVE.get().unwrap().join("tasks.ron")) .await { - tokio::io::Result::Ok(file) => serde_json::from_reader(file.into_std().await)?, + tokio::io::Result::Ok(file) => ron::de::from_reader(file.into_std().await)?, tokio::io::Result::Err(e) => match e.kind() { ErrorKind::NotFound => Default::default(), _ => panic!(),