diff --git a/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs b/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs index 3c57459..72e47d5 100644 --- a/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs +++ b/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs @@ -31,20 +31,22 @@ async fn main () -> anyhow::Result <()> { println! ("Base64 cert: {}", base64::encode (&server_cert)); tokio::fs::write ("quic_server.crt", &server_cert).await?; - let relay_state = RelayState::default (); - let relay_state = Arc::new (relay_state); + let relay_state = Arc::new (RelayState::default ()); - let make_svc = make_service_fn (|_conn| { - - - async { - Ok::<_, String> (service_fn (move |req| { - - - handle_http (req, ()) - })) - } - }); + let make_svc = { + let relay_state = Arc::clone (&relay_state); + make_service_fn (move |_conn| { + let relay_state = Arc::clone (&relay_state); + + async move { + Ok::<_, String> (service_fn (move |req| { + let relay_state = Arc::clone (&relay_state); + + handle_http (req, relay_state) + })) + } + }) + }; let http_addr = SocketAddr::from (([0, 0, 0, 0], 4004)); @@ -75,13 +77,20 @@ async fn main () -> anyhow::Result <()> { Ok (()) } -async fn handle_http (req: Request , _state: ()) +async fn handle_http (req: Request , relay_state: Arc ) -> anyhow::Result > { + let debug_string; + { + let p4_server_proxies = relay_state.p4_server_proxies.lock ().await; + + debug_string = format! ("{:#?}\n", p4_server_proxies.keys ().collect::> ()); + } + let resp = Response::builder () .status (StatusCode::OK) .header ("content-type", "text/plain") - .body (Body::from ("pong\n"))?; + .body (Body::from (debug_string))?; Ok (resp) }