From a122a2d6395e662dad356fcc46ed0dfd5e41d0bd Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 15 Aug 2021 20:27:40 +0100 Subject: [PATCH] server wip meta Signed-off-by: Ian Jackson --- src/bin/server.rs | 63 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index 1fd6695..1764470 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -215,6 +215,7 @@ async fn handle( } #[allow(unused_variables)] // xxx +#[allow(unused_mut)] // xxx async fn run_client(ic: Arc, mut web: mpsc::Receiver) -> Result @@ -272,14 +273,60 @@ async fn run_client(ic: Arc, &mut body ).await.context("read request body")?; - dbg!(whole_request.len()); - -/* - - multipart::ComponentIterator::resume_mid_component( - &initial[initial_remaining..], - */ - + let (meta, comps) = + multipart::ComponentIterator::resume_mid_component( + &whole_request[initial_remaining..], + boundary_finder + ).context("resume parsing body, after auth checks")?; + + let mut meta = MetadataFieldIterator::new(&meta); +/* + macro_rules!( + + let target_requests_outstanding = { + let server = ic.target_requests_outstanding; + let client: u32 = meta.need_parse()?; + if client != server { + throw!(anyhow!("mismatch: client={} != server={}", + client, server)); + } + Ok::<_,AE>(client) + }.context("target_requests_outstanding")?; + + let http_timeout: u64 = { + let server = ic.http_timeout; + let client = Duration::from_secs(meta.need_parse()?); + if client > server { + throw!(anyhow!("mismatch: client={} > server={}", + client, server)); + } + Ok::<_,AE>(client) + }.context("http_timeout")?; + + let max_batch_down = { + let server = ic.max_batch_down; + let client: u32 = meta.parse().context("max_batch_down")?; + let to_use = min(client, server); + Ok::<_,AE>(to_use) + }.context("max_batch_down")?; + + let max_batch_up = { + let server = ic.max_batch_up; + let client = meta.parse().context("max_batch_up")?; + if client > server { + throw!(anyhow!("mismatch: client={} != server={}", + client, server)); + } + + throw!(anyhow!( + "target_requests_outstanding mismatch: client={} server={}", + target_requests_outstanding, + ic.target_requests_outstanding + )) + } + + if ic. +*/ Ok::<_,AE>(()) }.await { Ok(()) => outstanding.push_back(Outstanding { -- 2.30.2