html terminal
Diffstat (limited to 'src/server.rs')
| -rw-r--r-- | src/server.rs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/server.rs b/src/server.rs index a5529cf..14f080c 100644 --- a/src/server.rs +++ b/src/server.rs @@ -7,8 +7,8 @@ use axum::{ Router, Server as AxumServer, }; -use std::{net::SocketAddr, sync::Arc, time::Duration}; -use tokio::{sync::broadcast, task::JoinHandle}; +use std::{net::SocketAddr, sync::Arc}; +use tokio::{sync::broadcast, task::JoinHandle, time::sleep, time::Duration}; // its a arced arcs pub struct State { @@ -21,7 +21,7 @@ pub struct State { impl State { fn new(stdin: broadcast::Sender<String>) -> Self { let (stdout, _) = broadcast::channel(2); - Self { stdin, stdout } + Self { stdout, stdin } } } @@ -65,15 +65,15 @@ impl Server { AxumServer::bind(&addr) .serve(router.into_make_service()) .await - .unwrap() + .unwrap(); }); let stdout = state.stdout.clone(); tokio::spawn(async move { macro_rules! backoff { ($backoff:expr) => { - $backoff *= $backoff; + $backoff <<= 1; println!("process died; waiting {}s", $backoff); - async_std::task::sleep(Duration::from_secs($backoff)).await; + sleep(Duration::from_secs($backoff)).await; continue; }; } @@ -84,10 +84,7 @@ impl Server { let _ = h.await; process_handle = None; } - - let spawn = if let Ok(s) = Process::spawn().await { - s - } else { + let Ok(spawn) = Process::spawn().await else { backoff!(backoff); }; process_handle = Some( |