1
Fork 0

switch to ron

This commit is contained in:
Andy Killorin 2023-12-27 20:14:37 -06:00
parent 7fd960076b
commit d6d143b3c2
Signed by: ank
GPG key ID: B6241CA3B552BCA4
2 changed files with 18 additions and 12 deletions

View file

@ -41,3 +41,5 @@ tracing-opentelemetry = "0.22"
opentelemetry-jaeger = { version = "0.20", features = ["rt-tokio"] } opentelemetry-jaeger = { version = "0.20", features = ["rt-tokio"] }
opentelemetry_sdk = { version = "0.21.1", features = ["trace"] } opentelemetry_sdk = { version = "0.21.1", features = ["trace"] }
memoize = "0.4.2" memoize = "0.4.2"
tracing-appender = "0.2.3"
ron = "0.8.1"

View file

@ -12,6 +12,7 @@ use blocks::{SharedWorld, Position, World, };
use depot::Depots; use depot::Depots;
use opentelemetry::global; use opentelemetry::global;
use opentelemetry_sdk::{runtime::Tokio, trace::BatchConfig}; use opentelemetry_sdk::{runtime::Tokio, trace::BatchConfig};
use ron::ser::PrettyConfig;
use tower_http::trace::TraceLayer; use tower_http::trace::TraceLayer;
use tracing::{info, span, Level}; use tracing::{info, span, Level};
use rstar::RTree; 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 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 world = bincode::serialize(&*state.world.clone().lock().await)?;
let depots = serde_json::to_string_pretty(&depots)?; let depots = ron::ser::to_string_pretty(&depots, pretty.clone())?;
let tasks = serde_json::to_string_pretty(tasks)?; let tasks = ron::ser::to_string_pretty(tasks, pretty.clone())?;
let path = &SAVE.get().unwrap(); let path = &SAVE.get().unwrap();
tokio::fs::write(path.join("turtles.json"), turtles).await?; tokio::fs::write(path.join("turtles.ron"), turtles).await?;
tokio::fs::write(path.join("depots.json"), depots).await?; tokio::fs::write(path.join("depots.ron"), depots).await?;
tokio::fs::write(path.join("tasks.json"), tasks).await?; tokio::fs::write(path.join("tasks.ron"), tasks).await?;
tokio::fs::write(path.join("world.bin"), world).await?; tokio::fs::write(path.join("world.bin"), world).await?;
Ok(()) Ok(())
} }
@ -170,10 +174,10 @@ async fn write_to_disk(state: &LiveState) -> anyhow::Result<()> {
async fn read_from_disk(kill: watch::Sender<bool>) -> anyhow::Result<LiveState> { async fn read_from_disk(kill: watch::Sender<bool>) -> anyhow::Result<LiveState> {
let turtles: Vec<Turtle> = match tokio::fs::OpenOptions::new() let turtles: Vec<Turtle> = match tokio::fs::OpenOptions::new()
.read(true) .read(true)
.open(SAVE.get().unwrap().join("turtles.json")) .open(SAVE.get().unwrap().join("turtles.ron"))
.await .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() { tokio::io::Result::Err(e) => match e.kind() {
ErrorKind::NotFound => Vec::new(), ErrorKind::NotFound => Vec::new(),
_ => panic!(), _ => panic!(),
@ -182,10 +186,10 @@ async fn read_from_disk(kill: watch::Sender<bool>) -> anyhow::Result<LiveState>
let depots = match tokio::fs::OpenOptions::new() let depots = match tokio::fs::OpenOptions::new()
.read(true) .read(true)
.open(SAVE.get().unwrap().join("depots.json")) .open(SAVE.get().unwrap().join("depots.ron"))
.await .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() { tokio::io::Result::Err(e) => match e.kind() {
ErrorKind::NotFound => Vec::new(), ErrorKind::NotFound => Vec::new(),
_ => panic!(), _ => panic!(),
@ -194,10 +198,10 @@ async fn read_from_disk(kill: watch::Sender<bool>) -> anyhow::Result<LiveState>
let scheduler = match tokio::fs::OpenOptions::new() let scheduler = match tokio::fs::OpenOptions::new()
.read(true) .read(true)
.open(SAVE.get().unwrap().join("tasks.json")) .open(SAVE.get().unwrap().join("tasks.ron"))
.await .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() { tokio::io::Result::Err(e) => match e.kind() {
ErrorKind::NotFound => Default::default(), ErrorKind::NotFound => Default::default(),
_ => panic!(), _ => panic!(),