From d2110048b87786cd6ed2452494441b6c96492410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BC=8A=E6=AC=A7?= Date: Tue, 1 Oct 2024 00:14:44 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Read=20response=20directly?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/guest-side/src/main.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/examples/guest-side/src/main.rs b/examples/guest-side/src/main.rs index 425438a..86e5ac8 100644 --- a/examples/guest-side/src/main.rs +++ b/examples/guest-side/src/main.rs @@ -2,6 +2,7 @@ mod html; mod model; use anyhow::Result; +use std::io::Read; use wasi::sockets::{ instance_network::instance_network, ip_name_lookup::{resolve_addresses, IpAddress}, @@ -62,7 +63,7 @@ async fn main() -> Result<()> { break; } } - let (input, output) = loop { + let (mut input, output) = loop { if let Ok(ret) = request.finish_connect() { break ret; } @@ -75,14 +76,11 @@ async fn main() -> Result<()> { "{}", serde_json::to_string(&Msg::new("debug", format!("Sent request"))).unwrap() ); - let response = loop { - // FIXME: Only read 100000 bytes at first - let response = input.read(100000)?; - if response.len() > 0 && response[0] != 0 { - break response; - } + let response = { + let mut ret = "".to_string(); + input.read_to_string(&mut ret)?; + ret }; - let response = String::from_utf8_lossy(&response).to_string(); println!( "{}", serde_json::to_string(&Msg::new("debug", format!("Response: {:?}", response))).unwrap()