perf(replay/recorder): buffer writes to zip file
This commit is contained in:
parent
e1683f41c6
commit
34dc14d6b2
@ -9,14 +9,14 @@ use log::debug;
|
|||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::Write,
|
io::{BufWriter, Write},
|
||||||
time::{Instant, 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: BufWriter<ZipWriter<File>>,
|
||||||
start: Instant,
|
start: Instant,
|
||||||
server: String,
|
server: String,
|
||||||
pub should_ignore_compression: bool,
|
pub should_ignore_compression: bool,
|
||||||
@ -33,20 +33,20 @@ 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: BufWriter::new(zip_writer),
|
||||||
start: Instant::now(),
|
start: Instant::now(),
|
||||||
server,
|
server,
|
||||||
should_ignore_compression,
|
should_ignore_compression,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn finish(mut self) -> Result<()> {
|
pub fn finish(self) -> Result<()> {
|
||||||
debug!("finishing replay recording");
|
debug!("finishing replay recording");
|
||||||
|
|
||||||
let elapsed = self.start.elapsed().as_millis();
|
let elapsed = self.start.elapsed().as_millis();
|
||||||
self.zip_writer
|
let mut zip_writer = self.zip_writer.into_inner()?;
|
||||||
.start_file("metaData.json", SimpleFileOptions::default())?;
|
zip_writer.start_file("metaData.json", SimpleFileOptions::default())?;
|
||||||
self.zip_writer.write_all(
|
zip_writer.write_all(
|
||||||
json!({
|
json!({
|
||||||
"singleplayer": false,
|
"singleplayer": false,
|
||||||
"serverName": self.server,
|
"serverName": self.server,
|
||||||
@ -61,7 +61,7 @@ impl Recorder {
|
|||||||
.to_string()
|
.to_string()
|
||||||
.as_bytes(),
|
.as_bytes(),
|
||||||
)?;
|
)?;
|
||||||
self.zip_writer.finish()?;
|
zip_writer.finish()?;
|
||||||
|
|
||||||
debug!("finished replay recording");
|
debug!("finished replay recording");
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user