From 04c3d69cbf947803db444925169ef9ceb81b3a15 Mon Sep 17 00:00:00 2001 From: ParkerTenBroeck <51721964+ParkerTenBroeck@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:59:24 -0500 Subject: [PATCH] removed silly thing --- relay/src/main.rs | 10 +++++----- relay/src/run.rs | 16 +++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/relay/src/main.rs b/relay/src/main.rs index 8824596..6844508 100644 --- a/relay/src/main.rs +++ b/relay/src/main.rs @@ -72,15 +72,15 @@ async fn ws_handler(socket: WebSocket) { }, }; - let (_process, mut sin, sout, serr) = match run::run(&artifact_dir).await{ + let mut process = match run::run(&artifact_dir).await{ Ok(process) => process, Err(err) => { _ = sender.send(Message::Text(format!("Failed to run: {err}").into())).await; return; }, }; - let mut sout = BufReader::new(sout).lines(); - let mut serr = BufReader::new(serr).lines(); + let mut sout = BufReader::new(process.stdout).lines(); + let mut serr = BufReader::new(process.stderr).lines(); let artifact_prefix = artifact_dir.to_str().unwrap_or("\0\0NOPE"); @@ -93,8 +93,8 @@ async fn ws_handler(socket: WebSocket) { Some(Ok(Message::Text(msg))) => { let input = serde_json::from_str::<'_, ClientInput>(&msg)?; use tokio::io::AsyncWriteExt; - sin.write_all(format!("key={}\n", input.buttons).as_bytes()).await?; - sin.write_all(format!("sw={}\n", input.switch).as_bytes()).await?; + process.stdin.write_all(format!("key={}\n", input.buttons).as_bytes()).await?; + process.stdin.write_all(format!("sw={}\n", input.switch).as_bytes()).await?; }, Some(Ok(_)) => {}, Some(Err(err)) => Err(err)?, diff --git a/relay/src/run.rs b/relay/src/run.rs index a2eed37..a784787 100644 --- a/relay/src/run.rs +++ b/relay/src/run.rs @@ -3,19 +3,17 @@ use std::{path::Path}; use tokio::process::{Child, ChildStdin, ChildStdout, ChildStderr, Command}; pub struct Process{ - child: Child, + pub child: Child, + pub stdin: ChildStdin, + pub stdout: ChildStdout, + pub stderr: ChildStderr } -impl Drop for Process{ - fn drop(&mut self) { - _ = self.child.start_kill() - } -} - -pub async fn run(artifact_dir: &Path) -> Result<(Process, ChildStdin, ChildStdout, ChildStderr), Box>{ +pub async fn run(artifact_dir: &Path) -> Result>{ let mut cmd = Command::new("ghdl"); cmd.args(["-r", "--std=08", "tb", "--stop-delta=2147483647", "--unbuffered"]); cmd.current_dir(artifact_dir); + cmd.kill_on_drop(true); cmd.stdin(std::process::Stdio::piped()) .stdout(std::process::Stdio::piped()) @@ -27,5 +25,5 @@ pub async fn run(artifact_dir: &Path) -> Result<(Process, ChildStdin, ChildStdo let stdout = child.stdout.take().ok_or("no stdout")?; let stderr = child.stderr.take().ok_or("no stderr")?; - Ok((Process { child }, stdin, stdout, stderr)) + Ok(Process { child, stdin, stdout, stderr }) } \ No newline at end of file