From: Fayeed Pawaskar Date: Tue, 8 Aug 2023 10:50:49 +0000 (+0530) Subject: Updated hyper to 1.0.0-rc.4 X-Git-Tag: remove^2~36 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=72ceceb7aeef86f4aaea14f02729a5b9e7716a9b;p=scryer-prolog.git Updated hyper to 1.0.0-rc.4 --- diff --git a/Cargo.lock b/Cargo.lock index c0c62cfc..4385dbcf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -954,13 +954,12 @@ dependencies = [ [[package]] name = "hyper" -version = "1.0.0-rc.3" +version = "1.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75264b2003a3913f118d35c586e535293b3e22e41f074930762929d071e092" +checksum = "d280a71f348bcc670fc55b02b63c53a04ac0bf2daff2980795aeaf53edae10e6" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", @@ -987,6 +986,24 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "hyper-util" +version = "0.0.0" +source = "git+https://github.com/hyperium/hyper-util.git#f898015fc9eca9f459ddac521db278d904099e89" +dependencies = [ + "futures-channel", + "futures-util", + "http", + "hyper 1.0.0-rc.4", + "once_cell", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + [[package]] name = "iana-time-zone" version = "0.1.57" @@ -1127,7 +1144,6 @@ checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libffi" version = "3.2.0" -source = "git+https://github.com/coasys/libffi-rs.git?branch=windows-space#f6e9e50efde0aa4e940dd6f709a59bb426875362" dependencies = [ "libc", "libffi-sys", @@ -1136,7 +1152,6 @@ dependencies = [ [[package]] name = "libffi-sys" version = "2.3.0" -source = "git+https://github.com/coasys/libffi-rs.git?branch=windows-space#f6e9e50efde0aa4e940dd6f709a59bb426875362" dependencies = [ "cc", ] @@ -1626,6 +1641,26 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.22", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -2011,7 +2046,8 @@ dependencies = [ "git-version", "hostname", "http-body-util", - "hyper 1.0.0-rc.3", + "hyper 1.0.0-rc.4", + "hyper-util", "indexmap", "lazy_static", "lexical", @@ -2497,6 +2533,28 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -2510,6 +2568,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", + "log", "pin-project-lite", "tracing-core", ] diff --git a/Cargo.toml b/Cargo.toml index 40b66623..50dab761 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,8 @@ smallvec = "1.8.0" sodiumoxide = "0.2.6" static_assertions = "1.1.0" ryu = "1.0.9" -hyper = { version = "1.0.0-rc.3", features = ["full"] } +hyper = { version = "1.0.0-rc.4", features = ["full"] } +hyper-util = { git = "https://github.com/hyperium/hyper-util.git" } tokio = { version = "1.28.2", features = ["full"] } futures = "0.3" regex = "1.9.1" @@ -69,7 +70,7 @@ http-body-util = "0.1.0-rc.2" bytes = "1" reqwest = { version = "0.11.18", features = ["blocking"] } dashu = { git = "https://github.com/coasys/dashu.git" } -libffi = { git = "https://github.com/coasys/libffi-rs.git", branch = "windows-space" } +libffi = { path = "../libffi-rs/libffi-rs" } rand = "0.8.5" [dev-dependencies] diff --git a/src/http.rs b/src/http.rs index 71d1682c..8f548235 100644 --- a/src/http.rs +++ b/src/http.rs @@ -27,28 +27,28 @@ impl Service> for HttpService { type Error = hyper::Error; type Future = Pin> + Send>>; - fn call(&mut self, req: Request) -> Self::Future { - // new connection! - // we send the Request info to Prolog - let response = Arc::new((Mutex::new(false), Mutex::new(None), Condvar::new())); - let http_request = HttpRequest { request: req, response: Arc::clone(&response) }; - self.tx.send(http_request).unwrap(); + fn call(self: &HttpService, req: Request) -> Self::Future { + // new connection! + // we send the Request info to Prolog + let response = Arc::new((Mutex::new(false), Mutex::new(None), Condvar::new())); + let http_request = HttpRequest { request: req, response: Arc::clone(&response) }; + self.tx.send(http_request).unwrap(); - // we wait for the Response info from Prolog - { - let (ready, _response, cvar) = &*response; - let mut ready = ready.lock().unwrap(); - while !*ready { - ready = cvar.wait(ready).unwrap(); - } - } - { - let (_, response, _) = &*response; - let response = response.lock().unwrap().take(); - let res = response.expect("Data race error in HTTP Server"); - Box::pin(async move { - Ok(res) - }) - } + // we wait for the Response info from Prolog + { + let (ready, _response, cvar) = &*response; + let mut ready = ready.lock().unwrap(); + while !*ready { + ready = cvar.wait(ready).unwrap(); + } + } + { + let (_, response, _) = &*response; + let response = response.lock().unwrap().take(); + let res = response.expect("Data race error in HTTP Server"); + Box::pin(async move { + Ok(res) + }) + } } } diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 88d1e2ca..f025306c 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -88,6 +88,7 @@ use hyper::{HeaderMap, Method}; use http_body_util::BodyExt; use bytes::Buf; use reqwest::Url; +use hyper_util::rt::TokioIo; pub(crate) fn get_key() -> KeyEvent { let key; @@ -4349,14 +4350,16 @@ impl Machine { let (stream, _) = listener.accept().await.unwrap(); tokio::task::spawn(async move { - if let Err(err) = http1::Builder::new() - .serve_connection(stream, HttpService { - tx - }) - .await - { - eprintln!("Error serving connection: {:?}", err); - } + let io = TokioIo::new(stream); + + if let Err(err) = http1::Builder::new() + .serve_connection(io, HttpService { + tx + }) + .await + { + eprintln!("Error serving connection: {:?}", err); + } }); } });