Jelajahi Sumber

[xitca-web]fix io-uring plaintext test. (#8046)

fakeshadow 2 tahun lalu
induk
melakukan
a802bc0c66

+ 55 - 55
frameworks/Rust/xitca-web/Cargo.lock

@@ -120,9 +120,9 @@ dependencies = [
 
 [[package]]
 name = "diesel_derives"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "143b758c91dbc3fe1fdcb0dba5bd13276c6a66422f2ef5795b58488248a310aa"
+checksum = "0ad74fdcf086be3d4fdd142f67937678fe60ed431c3b2f08599e7687269410c4"
 dependencies = [
  "proc-macro-error",
  "proc-macro2",
@@ -167,9 +167,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
 [[package]]
 name = "futures"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84"
+checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -182,9 +182,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5"
+checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -192,15 +192,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608"
+checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e"
+checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -209,15 +209,15 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531"
+checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70"
+checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -226,21 +226,21 @@ dependencies = [
 
 [[package]]
 name = "futures-sink"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364"
+checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
 
 [[package]]
 name = "futures-task"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366"
+checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
 
 [[package]]
 name = "futures-util"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1"
+checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -349,9 +349,9 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8"
 
 [[package]]
 name = "libc"
-version = "0.2.139"
+version = "0.2.140"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
 
 [[package]]
 name = "libmimalloc-sys"
@@ -567,18 +567,18 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.52"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.23"
+version = "1.0.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
 dependencies = [
  "proc-macro2",
 ]
@@ -690,18 +690,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 
 [[package]]
 name = "serde"
-version = "1.0.154"
+version = "1.0.156"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cdd151213925e7f1ab45a9bbfb129316bd00799784b174b7cc7bcd16961c49e"
+checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.154"
+version = "1.0.156"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fc80d722935453bcafdc2c9a73cd6fac4dc1938f0346035d84bf99fa9e33217"
+checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -990,9 +990,9 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
 dependencies = [
  "windows_aarch64_gnullvm",
  "windows_aarch64_msvc",
@@ -1005,50 +1005,50 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.42.1"
+version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
 
 [[package]]
 name = "xitca-http"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "futures-core",
  "http",
@@ -1068,7 +1068,7 @@ dependencies = [
 [[package]]
 name = "xitca-io"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "bytes",
  "tokio",
@@ -1077,7 +1077,7 @@ dependencies = [
 [[package]]
 name = "xitca-postgres"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "fallible-iterator",
  "percent-encoding",
@@ -1093,7 +1093,7 @@ dependencies = [
 [[package]]
 name = "xitca-router"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "xitca-unsafe-collection",
 ]
@@ -1101,7 +1101,7 @@ dependencies = [
 [[package]]
 name = "xitca-server"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "socket2",
  "tokio",
@@ -1115,12 +1115,12 @@ dependencies = [
 [[package]]
 name = "xitca-service"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 
 [[package]]
 name = "xitca-unsafe-collection"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "bytes",
 ]
@@ -1147,13 +1147,13 @@ dependencies = [
  "xitca-server",
  "xitca-service",
  "xitca-unsafe-collection",
- "xitca-web 0.1.0 (git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86)",
+ "xitca-web 0.1.0 (git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf)",
 ]
 
 [[package]]
 name = "xitca-web"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86#e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf#c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf"
 dependencies = [
  "futures-core",
  "pin-project-lite",

+ 8 - 8
frameworks/Rust/xitca-web/Cargo.toml

@@ -81,14 +81,14 @@ codegen-units = 1
 panic = "abort"
 
 [patch.crates-io]
-xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-router = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
-xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "e648bb2f6e2fd787c2dac0b7e6b0a5bcf7d12f86" }
+xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-router = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
+xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "c58463d4cd2e58a1fbbe5d15cb4e82c7cd0055bf" }
 
 postgres-protocol = { git = "https://github.com/sfackler/rust-postgres.git", rev = "7cd7b187a5cb990ceb0ea9531cd3345b1e2799c3" }
 

+ 1 - 1
frameworks/Rust/xitca-web/rust-toolchain.toml

@@ -1,2 +1,2 @@
 [toolchain]
-channel = "nightly-2023-03-05"
+channel = "nightly-2023-03-16"

+ 3 - 6
frameworks/Rust/xitca-web/src/db.rs

@@ -78,7 +78,7 @@ impl Client {
             .next()
             .await
             .ok_or_else(|| format!("World {id} does not exist"))?
-            .map(|row| World::new(row.get(0), row.get(1)))
+            .map(|row| World::new(row.get_raw(0), row.get_raw(1)))
             .map_err(Into::into)
     }
 
@@ -137,16 +137,13 @@ impl Client {
     pub async fn tell_fortune(&self) -> HandleResult<Fortunes> {
         let mut items = Vec::with_capacity(32);
 
-        items.push(Fortune::from_static(
-            0,
-            "Additional fortune added at request time.",
-        ));
+        items.push(Fortune::new(0, "Additional fortune added at request time."));
 
         let mut stream = self.client.query_raw::<&[i32]>(&self.fortune, &[]).await?;
 
         while let Some(row) = stream.next().await {
             let row = row?;
-            items.push(Fortune::new(row.get(0), row.get(1)));
+            items.push(Fortune::new(row.get_raw(0), row.get_raw::<String>(1)));
         }
 
         items.sort_by(|it, next| it.message.cmp(&next.message));

+ 4 - 4
frameworks/Rust/xitca-web/src/main_iou.rs

@@ -166,19 +166,20 @@ where
             let std = stream.into_std()?;
             let stream = tokio_uring::net::TcpStream::from_std(std);
 
-            let mut read_buf = BytesMut::new();
+            let mut read_buf = BytesMut::with_capacity(4096);
             let mut write_buf = BytesMut::with_capacity(4096);
+            let mut paged = PagedBytesMut::new();
 
             let mut ctx = Context::<_, 8>::new(self.date.get());
 
             'io: loop {
-                read_buf.reserve(4096);
                 let (res, buf) = stream.read(read_buf).await;
                 if res? == 0 {
                     break;
                 }
+                read_buf = buf;
+                paged.get_mut().extend_from_slice(&read_buf);
 
-                let mut paged = PagedBytesMut::from(buf);
                 while let Some((req, _)) = ctx.decode_head::<65535>(&mut paged).unwrap() {
                     let (parts, body) = self.service.call(req).await.unwrap().into_parts();
                     let mut encoder = ctx.encode_head(parts, &body, &mut write_buf).unwrap();
@@ -189,7 +190,6 @@ where
                     }
                     encoder.encode_eof(&mut write_buf);
                 }
-                read_buf = paged.into_inner();
 
                 while !write_buf.is_empty() {
                     let (res, mut w) = stream.write(write_buf).await;

+ 3 - 24
frameworks/Rust/xitca-web/src/ser.rs

@@ -1,7 +1,6 @@
 #![allow(dead_code)]
 
-#[cfg(feature = "pg")]
-use xitca_unsafe_collection::bytes::BytesStr;
+use std::borrow::Cow;
 
 pub struct Message {
     message: &'static str,
@@ -32,32 +31,12 @@ impl World {
 #[cfg_attr(feature = "pg-orm", derive(Queryable))]
 pub struct Fortune {
     pub id: i32,
-    #[cfg(feature = "pg")]
-    pub message: BytesStr,
-    #[cfg(not(feature = "pg"))]
-    pub message: String,
+    pub message: Cow<'static, str>,
 }
 
-#[cfg(feature = "pg")]
 impl Fortune {
     #[inline]
-    pub const fn from_static(id: i32, message: &'static str) -> Self {
-        Self {
-            id,
-            message: BytesStr::from_static(message),
-        }
-    }
-
-    #[inline]
-    pub const fn new(id: i32, message: BytesStr) -> Self {
-        Self { id, message }
-    }
-}
-
-#[cfg(not(feature = "pg"))]
-impl Fortune {
-    #[inline]
-    pub fn new(id: i32, message: impl Into<String>) -> Self {
+    pub fn new(id: i32, message: impl Into<Cow<'static, str>>) -> Self {
         Self {
             id,
             message: message.into(),