From: Ian Jackson Date: Sun, 15 Aug 2021 21:01:27 +0000 (+0100) Subject: server: wip plumbing X-Git-Tag: hippotat/1.0.0~158 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=commitdiff_plain;h=3ce862e62e328f1809191c83279fa2c9c4846a3c server: wip plumbing Signed-off-by: Ian Jackson --- diff --git a/src/bin/server.rs b/src/bin/server.rs index 9446b58..65b7e48 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -24,6 +24,7 @@ struct ClientHandles { /// Sent from hyper worker pool task to client task #[allow(dead_code)] // xxx +#[derive(Debug)] struct WebRequest { // initial part of body // used up to and including first 2 lines of metadata @@ -39,6 +40,7 @@ struct WebRequest { /// Reply from client task to hyper worker pool task #[allow(dead_code)] // xxx +#[derive(Debug)] struct WebResponse { warnings: Warnings, data: Result, @@ -222,7 +224,7 @@ async fn run_client(ic: Arc, { struct Outstanding { reply_to: tokio::sync::oneshot::Sender, - max_requests_outstanding: u32, + target_requests_outstanding: u32, } let mut outstanding: VecDeque = default(); let downbound: VecDeque<(/*xxx*/)> = default(); @@ -240,7 +242,7 @@ async fn run_client(ic: Arc, if ! downbound.is_empty() { outstanding.pop_front() } else if let Some((i,_)) = outstanding.iter().enumerate().find({ - |(_,o)| outstanding.len() > o.max_requests_outstanding.sat() + |(_,o)| outstanding.len() > o.target_requests_outstanding.sat() }) { Some(outstanding.remove(i).unwrap()) } else { @@ -252,6 +254,7 @@ async fn run_client(ic: Arc, warnings: default(), }; + dbg!(&response); try_send_response(ret.reply_to, response); } @@ -329,12 +332,14 @@ async fn run_client(ic: Arc, dbg!(comp.name, DumpHex(comp.payload)); } - Ok::<_,AE>(()) + Ok::<_,AE>(target_requests_outstanding) }.await { - Ok(()) => outstanding.push_back(Outstanding { - reply_to: reply_to, - max_requests_outstanding: 42, // xxx - }), + Ok(target_requests_outstanding) => { + outstanding.push_back(Outstanding { + reply_to, + target_requests_outstanding, + }); + }, Err(e) => { try_send_response(reply_to, WebResponse { data: Err(e),