]> Repositorios git - scryer-prolog.git/commitdiff
Updated hyper to 1.0.0-rc.4
authorFayeed Pawaskar <[email protected]>
Tue, 8 Aug 2023 10:50:49 +0000 (16:20 +0530)
committerFayeed Pawaskar <[email protected]>
Tue, 8 Aug 2023 10:50:49 +0000 (16:20 +0530)
Cargo.lock
Cargo.toml
src/http.rs
src/machine/system_calls.rs

index c0c62cfc1b69600472dad14f56e2195c014be47c..4385dbcfce9e3a640bdc3b936752316cf8703f03 100644 (file)
@@ -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",
 ]
index 40b66623c5aa33bc3716926ed8cdd65c9c892c1d..50dab76152736b5f08e7f01a4809696e9bf7cf54 100644 (file)
@@ -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]
index 71d1682cff3d7cc7ea5b1743f494790d34621b28..8f548235ef50947bd6beda33017e469b26ff7665 100644 (file)
@@ -27,28 +27,28 @@ impl Service<Request<IncomingBody>> for HttpService {
     type Error = hyper::Error;
     type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::Error>> + Send>>;
 
-    fn call(&mut self, req: Request<IncomingBody>) -> 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<IncomingBody>) -> 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)
+                       })
+               }
     }
 }
index 88d1e2cada0c14ee80178e847b8be09ad1bc910e..f025306c448f31d79c1c2e5b0136376f115781d2 100644 (file)
@@ -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);
+                }
                    });
                }
            });