diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-07-09 19:53:10 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-07-09 19:53:10 +0200 | 
| commit | c101726425a492e195eafb27ca261b0145ffbab1 (patch) | |
| tree | dc93b2c26c1df4931d16e33625586d9b7a1b2fa3 /server/replaytool | |
| parent | 5d2cef94937dd4f43d7831640aede5d38fa91506 (diff) | |
| download | hurrycurry-c101726425a492e195eafb27ca261b0145ffbab1.tar hurrycurry-c101726425a492e195eafb27ca261b0145ffbab1.tar.bz2 hurrycurry-c101726425a492e195eafb27ca261b0145ffbab1.tar.zst | |
contignous recording
Diffstat (limited to 'server/replaytool')
| -rw-r--r-- | server/replaytool/src/main.rs | 48 | 
1 files changed, 40 insertions, 8 deletions
| diff --git a/server/replaytool/src/main.rs b/server/replaytool/src/main.rs index ee6a8def..a41aaa1f 100644 --- a/server/replaytool/src/main.rs +++ b/server/replaytool/src/main.rs @@ -22,7 +22,10 @@ use futures_util::{SinkExt, StreamExt};  use hurrycurry_protocol::{PacketC, PacketS};  use log::{debug, info, warn, LevelFilter};  use serde::{Deserialize, Serialize}; -use std::{path::PathBuf, time::Instant}; +use std::{ +    path::PathBuf, +    time::{Instant, SystemTime}, +};  use tokio::{      fs::File,      io::{AsyncBufReadExt, AsyncWriteExt, BufReader, BufWriter}, @@ -32,8 +35,15 @@ use tokio_tungstenite::tungstenite::Message;  #[derive(Parser)]  enum Args { -    Record { url: String, output: PathBuf }, -    Replay { input: PathBuf }, +    Record { +        #[arg(short, long)] +        r#loop: bool, +        url: String, +        output: PathBuf, +    }, +    Replay { +        input: PathBuf, +    },  }  #[derive(Serialize, Deserialize)] @@ -52,10 +62,27 @@ async fn main() -> anyhow::Result<()> {      let args = Args::parse();      match args { -        Args::Record { url, output } => { -            let mut file = BufWriter::new(ZstdEncoder::new(File::create(&output).await?)); +        Args::Record { +            url, +            output, +            r#loop, +        } => loop { +            let mut file = BufWriter::new(ZstdEncoder::new( +                File::create(&if r#loop { +                    output.join(format!( +                        "replay-{}", +                        SystemTime::now() +                            .duration_since(SystemTime::UNIX_EPOCH) +                            .unwrap() +                            .as_secs() +                    )) +                } else { +                    output.clone() +                }) +                .await?, +            ));              info!("connecting to {url:?}..."); -            let (mut sock, _) = tokio_tungstenite::connect_async(url).await?; +            let (mut sock, _) = tokio_tungstenite::connect_async(&url).await?;              info!("starting recording.");              let start = Instant::now(); @@ -96,8 +123,13 @@ async fn main() -> anyhow::Result<()> {                  }              }              drop(file); -            info!("done") -        } +            info!("done"); +            if r#loop { +                info!("restarting..."); +            } else { +                break; +            } +        },          Args::Replay { input } => {              let ws_listener = TcpListener::bind("0.0.0.0:27032").await?;              info!("listening for websockets on {}", ws_listener.local_addr()?); | 
