refactor(replay): use Instant for timestamps

This commit is contained in:
Ryan 2025-03-10 20:08:42 -04:00
parent b2d8618bba
commit 09543b2dcd
Signed by: ErrorNoInternet
GPG Key ID: 2486BFB7B1E6A4A3

View File

@ -12,14 +12,14 @@ use smallvec::SmallVec;
use std::{ use std::{
fs::File, fs::File,
io::Write, io::Write,
time::{SystemTime, UNIX_EPOCH}, time::{Instant, SystemTime, UNIX_EPOCH},
}; };
use zip::{ZipWriter, write::SimpleFileOptions}; use zip::{ZipWriter, write::SimpleFileOptions};
#[derive(Resource)] #[derive(Resource)]
pub struct Recorder { pub struct Recorder {
zip_writer: ZipWriter<File>, zip_writer: ZipWriter<File>,
start_time: u128, start: Instant,
server: String, server: String,
ignore_compression: bool, ignore_compression: bool,
} }
@ -36,21 +36,23 @@ impl Recorder {
zip_writer.start_file("recording.tmcpr", SimpleFileOptions::default())?; zip_writer.start_file("recording.tmcpr", SimpleFileOptions::default())?;
Ok(Self { Ok(Self {
zip_writer, zip_writer,
start_time: SystemTime::now().duration_since(UNIX_EPOCH)?.as_millis(), start: Instant::now(),
server, server,
ignore_compression, ignore_compression,
}) })
} }
pub fn finish(mut self) -> Result<()> { pub fn finish(mut self) -> Result<()> {
let elapsed = self.start.elapsed();
self.zip_writer self.zip_writer
.start_file("metaData.json", SimpleFileOptions::default())?; .start_file("metaData.json", SimpleFileOptions::default())?;
self.zip_writer.write_all( self.zip_writer.write_all(
json!({ json!({
"singleplayer": false, "singleplayer": false,
"serverName": self.server, "serverName": self.server,
"duration": SystemTime::now().duration_since(UNIX_EPOCH)?.as_millis() - self.start_time, "duration": elapsed.as_millis(),
"date": self.start_time, "date": SystemTime::now().duration_since(UNIX_EPOCH)? - elapsed,
"mcversion": VERSION_NAME, "mcversion": VERSION_NAME,
"fileFormat": "MCPR", "fileFormat": "MCPR",
"fileFormatVersion": 14, "fileFormatVersion": 14,
@ -66,10 +68,7 @@ impl Recorder {
} }
fn get_timestamp(&self) -> Result<[u8; 4]> { fn get_timestamp(&self) -> Result<[u8; 4]> {
Ok(TryInto::<u32>::try_into( Ok(TryInto::<u32>::try_into(self.start.elapsed().as_millis())?.to_be_bytes())
SystemTime::now().duration_since(UNIX_EPOCH)?.as_millis() - self.start_time,
)?
.to_be_bytes())
} }
fn save_raw_packet(&mut self, raw_packet: &[u8]) -> Result<()> { fn save_raw_packet(&mut self, raw_packet: &[u8]) -> Result<()> {