From 74478a138b9a936c9bb4c5b586a344cbc52fc1be Mon Sep 17 00:00:00 2001 From: fakeshadow <24548779@qq.com> Date: Mon, 4 Mar 2024 11:53:43 +0800 Subject: [PATCH 1/3] [xitca-web] dep update. --- frameworks/Rust/xitca-web/Cargo.lock | 159 +++++++++--------- frameworks/Rust/xitca-web/Cargo.toml | 12 +- frameworks/Rust/xitca-web/src/main_sync.rs | 17 +- frameworks/Rust/xitca-web/src/main_wasm.rs | 39 ++--- frameworks/Rust/xitca-web/src/ser.rs | 1 + .../Rust/xitca-web/xitca-web-axum.dockerfile | 2 +- .../Rust/xitca-web/xitca-web-iou.dockerfile | 2 +- .../Rust/xitca-web/xitca-web-sync.dockerfile | 2 +- .../Rust/xitca-web/xitca-web-wasm.dockerfile | 2 +- .../Rust/xitca-web/xitca-web.dockerfile | 2 +- 10 files changed, 106 insertions(+), 132 deletions(-) diff --git a/frameworks/Rust/xitca-web/Cargo.lock b/frameworks/Rust/xitca-web/Cargo.lock index 865720c700c..27e67f118e0 100644 --- a/frameworks/Rust/xitca-web/Cargo.lock +++ b/frameworks/Rust/xitca-web/Cargo.lock @@ -149,12 +149,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" [[package]] name = "cfg-if" @@ -319,9 +316,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "hermit-abi" -version = "0.3.4" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hmac" @@ -411,9 +408,9 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "lock_api" @@ -427,9 +424,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "matchit" @@ -461,9 +458,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] @@ -486,9 +483,9 @@ checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -549,18 +546,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", @@ -625,9 +622,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -705,9 +702,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "sailfish" @@ -768,18 +765,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -788,9 +785,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.111" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -866,12 +863,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -893,9 +890,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "2.0.48" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -925,9 +922,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "libc", @@ -935,7 +932,7 @@ dependencies = [ "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.6", "windows-sys 0.48.0", ] @@ -971,9 +968,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da193277a4e2c33e59e09b5861580c33dd0a637c3883d0fa74ba40c0374af2e" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "bitflags 2.4.2", "bytes", @@ -1037,9 +1034,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -1099,7 +1096,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.4", ] [[package]] @@ -1119,17 +1116,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -1140,9 +1137,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -1152,9 +1149,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -1164,9 +1161,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -1176,9 +1173,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -1188,9 +1185,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" @@ -1200,9 +1197,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -1212,15 +1209,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "xitca-codegen" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185ec568d3620ab5129371e5fbfbc8c7b2791f10ed4e0ff216f8784cd896127c" +checksum = "866906a5f280481ef022ccdec1640730550304bb86b016815d9982fde2f48e3e" dependencies = [ "quote", "syn", @@ -1228,9 +1225,9 @@ dependencies = [ [[package]] name = "xitca-http" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b15032fe8f95903c5d16d49dbf3e336c0fd7b558acc9ca385e992651b522b4" +checksum = "8b1982607f88759de96dec5b234e9cf835d6a4995e395b65a201e656d0641974" dependencies = [ "futures-core", "http", @@ -1238,7 +1235,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.5", + "socket2 0.5.6", "tokio", "tokio-uring", "tracing", @@ -1250,9 +1247,9 @@ dependencies = [ [[package]] name = "xitca-io" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887cc8153538637515e0663704f3492803c5bb48eb7947c80689154d965b7e0" +checksum = "7581c12bcd8b2194271da2117926a577e4e974ab840c7a3f61cc187a249335c8" dependencies = [ "bytes", "tokio", @@ -1263,7 +1260,7 @@ dependencies = [ [[package]] name = "xitca-postgres" version = "0.1.0" -source = "git+https://github.com/HFQR/xitca-web.git?rev=d79f510197e0f36534fe22b7a467c55dbd683681#d79f510197e0f36534fe22b7a467c55dbd683681" +source = "git+https://github.com/HFQR/xitca-web.git?rev=f93419be7519266f03e524ebfc75d359246df48a#f93419be7519266f03e524ebfc75d359246df48a" dependencies = [ "fallible-iterator", "percent-encoding", @@ -1287,11 +1284,11 @@ dependencies = [ [[package]] name = "xitca-server" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07160d17cf458adf7f38a2f7bc37ecb15732909683e614bcfe5f6ac8202bda5" +checksum = "f48656d81909cb34fcf01288cdaf2bd77848d0f0dcbdc0c429b6ed376f78f4d5" dependencies = [ - "socket2 0.5.5", + "socket2 0.5.6", "tokio", "tokio-uring", "tracing", @@ -1308,9 +1305,9 @@ checksum = "09a4a38548b14925111dd99560f0a10d1eb9e3e117fa5471c35387ed6f77b58c" [[package]] name = "xitca-unsafe-collection" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38c5b92c72ba986bb2c2f4fc40ec56e841194773c02278f3c8d4c9733807270" +checksum = "552a6bf21a5d0dc470644cb3b99f98f44bd414cd6fcca74610465d8196b1d23e" dependencies = [ "bytes", ] @@ -1337,14 +1334,14 @@ dependencies = [ "xitca-server", "xitca-service", "xitca-unsafe-collection", - "xitca-web 0.2.1", + "xitca-web 0.4.0", ] [[package]] name = "xitca-web" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26cb7ab5765524ce47a8c173e16a3184146440e3de3c240ba0d14a617b0f090" +checksum = "cfae98470b0f55b978ebdccd1317a658590aa6fecec4db61522adaa8e6943747" dependencies = [ "futures-core", "http-body", diff --git a/frameworks/Rust/xitca-web/Cargo.toml b/frameworks/Rust/xitca-web/Cargo.toml index 9627c09a692..bfe1a11bdf8 100644 --- a/frameworks/Rust/xitca-web/Cargo.toml +++ b/frameworks/Rust/xitca-web/Cargo.toml @@ -51,18 +51,18 @@ io-uring = ["xitca-http/io-uring", "xitca-server/io-uring"] axum = ["dep:axum", "http-body", "tower", "tower-http", "xitca-web/tower-http-compat" ] [dependencies] -xitca-http = "0.2" -xitca-io = "0.1" -xitca-server = "0.1" +xitca-http = "0.4" +xitca-io = "0.2" +xitca-server = "0.2" xitca-service = "0.1" -xitca-unsafe-collection = "0.1" +xitca-unsafe-collection = "0.1.1" atoi = "2" serde = { version = "1" } serde_json = { version = "1" } # web optional -xitca-web = { version = "0.2", features = ["json"], optional = true } +xitca-web = { version = "0.4", features = ["json"], optional = true } # raw-pg optional xitca-postgres = { version = "0.1", optional = true } @@ -92,5 +92,5 @@ codegen-units = 1 panic = "abort" [patch.crates-io] -xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "d79f510197e0f36534fe22b7a467c55dbd683681" } +xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "f93419be7519266f03e524ebfc75d359246df48a" } mio = { git = "https://github.com/fakeshadow/mio.git", rev = "52b72d372bfe5807755b7f5e3e1edf282954d6ba" } diff --git a/frameworks/Rust/xitca-web/src/main_sync.rs b/frameworks/Rust/xitca-web/src/main_sync.rs index e56f481c61d..03f6c9ea3a3 100644 --- a/frameworks/Rust/xitca-web/src/main_sync.rs +++ b/frameworks/Rust/xitca-web/src/main_sync.rs @@ -6,8 +6,9 @@ mod util; use serde::Serialize; use xitca_web::{ codegen::route, - handler::{html::Html, json::Json, query::Query, state::StateOwn}, + handler::{html::Html, json::Json, query::Query, state::StateOwn, text::Text}, http::{header::SERVER, WebResponse}, + route::get, App, }; @@ -18,8 +19,8 @@ use util::{HandleResult, SERVER_HEADER_VALUE}; fn main() -> std::io::Result<()> { App::new() .with_state(db_diesel::create()?) - .at_typed(plaintext) - .at_typed(json) + .at("/plaintext", get(Text("Hello, World!"))) + .at("/json", get(Json(ser::Message::new()))) .at_typed(db) .at_typed(fortunes) .at_typed(queries) @@ -36,16 +37,6 @@ fn header(mut res: WebResponse) -> WebResponse { res } -#[route("/plaintext", method = get)] -fn plaintext() -> &'static str { - "Hello, World!" -} - -#[route("/json", method = get)] -fn json() -> Json { - Json(ser::Message::new()) -} - #[route("/db", method = get)] fn db(StateOwn(pool): StateOwn) -> HandleResult> { pool.get_world().map(Json) diff --git a/frameworks/Rust/xitca-web/src/main_wasm.rs b/frameworks/Rust/xitca-web/src/main_wasm.rs index 0e04f650a4c..4a38435a151 100644 --- a/frameworks/Rust/xitca-web/src/main_wasm.rs +++ b/frameworks/Rust/xitca-web/src/main_wasm.rs @@ -1,46 +1,31 @@ mod ser; mod util; -use std::{env, io, net::TcpListener, os::wasi::io::FromRawFd}; - use xitca_web::{ - handler::{handler_service, json::Json}, + handler::{json::Json, text::Text}, http::{header::SERVER, WebResponse}, route::get, - service::Service, - App, WebContext, + App, }; -fn main() -> io::Result<()> { - let fd = env::var("FD_COUNT") +fn main() -> std::io::Result<()> { + let listener = std::env::var("FD_COUNT") .ok() - .and_then(|var| var.parse().ok()) + .and_then(|v| v.parse().ok()) + .map(|fd| unsafe { std::os::wasi::io::FromRawFd::from_raw_fd(fd) }) .expect("failed to parse FD_COUNT env"); - let listener = unsafe { TcpListener::from_raw_fd(fd) }; - App::new() - .at( - "/json", - get(handler_service(|| async { Json(ser::Message::new()) })), - ) - .at( - "/plaintext", - get(handler_service(|| async { "Hello, World!" })), - ) - .enclosed_fn(middleware_fn) + .at("/json", get(Json(ser::Message::new()))) + .at("/plaintext", get(Text("Hello, World!"))) + .map(header) .serve() .listen(listener)? .run() .wait() } -async fn middleware_fn(service: &S, ctx: WebContext<'_>) -> Result -where - S: for<'r> Service, Response = WebResponse, Error = E>, -{ - service.call(ctx).await.map(|mut res| { - res.headers_mut().append(SERVER, util::SERVER_HEADER_VALUE); - res - }) +fn header(mut res: WebResponse) -> WebResponse { + res.headers_mut().append(SERVER, util::SERVER_HEADER_VALUE); + res } diff --git a/frameworks/Rust/xitca-web/src/ser.rs b/frameworks/Rust/xitca-web/src/ser.rs index 52c2bc3fdab..8e15ce71671 100644 --- a/frameworks/Rust/xitca-web/src/ser.rs +++ b/frameworks/Rust/xitca-web/src/ser.rs @@ -11,6 +11,7 @@ use xitca_http::{ use crate::util::Error; +#[derive(Clone)] pub struct Message { message: &'static str, } diff --git a/frameworks/Rust/xitca-web/xitca-web-axum.dockerfile b/frameworks/Rust/xitca-web/xitca-web-axum.dockerfile index 803e8bd7976..6c0422ea4ff 100644 --- a/frameworks/Rust/xitca-web/xitca-web-axum.dockerfile +++ b/frameworks/Rust/xitca-web/xitca-web-axum.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.75 +FROM rust:1.76 ADD ./ /xitca-web WORKDIR /xitca-web diff --git a/frameworks/Rust/xitca-web/xitca-web-iou.dockerfile b/frameworks/Rust/xitca-web/xitca-web-iou.dockerfile index 77fa783f748..35e53b29db8 100644 --- a/frameworks/Rust/xitca-web/xitca-web-iou.dockerfile +++ b/frameworks/Rust/xitca-web/xitca-web-iou.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.75 +FROM rust:1.76 ADD ./ /xitca-web WORKDIR /xitca-web diff --git a/frameworks/Rust/xitca-web/xitca-web-sync.dockerfile b/frameworks/Rust/xitca-web/xitca-web-sync.dockerfile index 8494f086a57..93f848de2ec 100644 --- a/frameworks/Rust/xitca-web/xitca-web-sync.dockerfile +++ b/frameworks/Rust/xitca-web/xitca-web-sync.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.75 +FROM rust:1.76 ADD ./ /xitca-web WORKDIR /xitca-web diff --git a/frameworks/Rust/xitca-web/xitca-web-wasm.dockerfile b/frameworks/Rust/xitca-web/xitca-web-wasm.dockerfile index f89125def21..d5611eb092d 100644 --- a/frameworks/Rust/xitca-web/xitca-web-wasm.dockerfile +++ b/frameworks/Rust/xitca-web/xitca-web-wasm.dockerfile @@ -1,7 +1,7 @@ ARG WASMTIME_VERSION=15.0.0 ARG WASM_TARGET=wasm32-wasi-preview1-threads -FROM rust:1.75 AS compile +FROM rust:1.76 AS compile ARG WASMTIME_VERSION ARG WASM_TARGET diff --git a/frameworks/Rust/xitca-web/xitca-web.dockerfile b/frameworks/Rust/xitca-web/xitca-web.dockerfile index a7eba25eb39..88ff778663c 100644 --- a/frameworks/Rust/xitca-web/xitca-web.dockerfile +++ b/frameworks/Rust/xitca-web/xitca-web.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.75 +FROM rust:1.76 ADD ./ /xitca-web WORKDIR /xitca-web From 0c630925233d325ad7440af5766ca01e0d1f965e Mon Sep 17 00:00:00 2001 From: fakeshadow <24548779@qq.com> Date: Sat, 9 Mar 2024 21:43:26 +0800 Subject: [PATCH 2/3] add auto reconnect to db client. --- frameworks/Rust/xitca-web/Cargo.lock | 18 ++++++------ frameworks/Rust/xitca-web/Cargo.toml | 2 +- frameworks/Rust/xitca-web/src/db.rs | 41 ++++++++++------------------ 3 files changed, 25 insertions(+), 36 deletions(-) diff --git a/frameworks/Rust/xitca-web/Cargo.lock b/frameworks/Rust/xitca-web/Cargo.lock index 27e67f118e0..efd950e830a 100644 --- a/frameworks/Rust/xitca-web/Cargo.lock +++ b/frameworks/Rust/xitca-web/Cargo.lock @@ -149,9 +149,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.88" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-if" @@ -340,9 +340,9 @@ dependencies = [ [[package]] name = "http" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -546,18 +546,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -1260,7 +1260,7 @@ dependencies = [ [[package]] name = "xitca-postgres" version = "0.1.0" -source = "git+https://github.com/HFQR/xitca-web.git?rev=f93419be7519266f03e524ebfc75d359246df48a#f93419be7519266f03e524ebfc75d359246df48a" +source = "git+https://github.com/HFQR/xitca-web.git?rev=4309a6d8f0c8f03b24fe1e74f439b8cb377799c1#4309a6d8f0c8f03b24fe1e74f439b8cb377799c1" dependencies = [ "fallible-iterator", "percent-encoding", diff --git a/frameworks/Rust/xitca-web/Cargo.toml b/frameworks/Rust/xitca-web/Cargo.toml index bfe1a11bdf8..e5e88e1961f 100644 --- a/frameworks/Rust/xitca-web/Cargo.toml +++ b/frameworks/Rust/xitca-web/Cargo.toml @@ -92,5 +92,5 @@ codegen-units = 1 panic = "abort" [patch.crates-io] -xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "f93419be7519266f03e524ebfc75d359246df48a" } +xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "4309a6d8f0c8f03b24fe1e74f439b8cb377799c1" } mio = { git = "https://github.com/fakeshadow/mio.git", rev = "52b72d372bfe5807755b7f5e3e1edf282954d6ba" } diff --git a/frameworks/Rust/xitca-web/src/db.rs b/frameworks/Rust/xitca-web/src/db.rs index 81e8094c527..755dfaacf70 100644 --- a/frameworks/Rust/xitca-web/src/db.rs +++ b/frameworks/Rust/xitca-web/src/db.rs @@ -1,6 +1,8 @@ -use std::{collections::HashMap, fmt::Write, future::IntoFuture}; +use std::{collections::HashMap, fmt::Write}; -use xitca_postgres::{statement::Statement, AsyncLendingIterator, Postgres}; +use xitca_postgres::{ + pipeline::Pipeline, statement::Statement, AsyncLendingIterator, SharedClient, +}; use xitca_unsafe_collection::no_hash::NoHashBuilder; use super::{ @@ -9,7 +11,7 @@ use super::{ }; pub struct Client { - client: xitca_postgres::Client, + client: SharedClient, #[cfg(not(feature = "pg-sync"))] rng: std::cell::RefCell, #[cfg(feature = "pg-sync")] @@ -19,27 +21,14 @@ pub struct Client { updates: HashMap, } -impl Drop for Client { - fn drop(&mut self) { - drop(self.fortune.clone().into_guarded(&self.client)); - drop(self.world.clone().into_guarded(&self.client)); - for (_, stmt) in std::mem::take(&mut self.updates) { - drop(stmt.into_guarded(&self.client)) - } - } -} - pub async fn create() -> HandleResult { - let (client, driver) = Postgres::new(DB_URL.to_string()).connect().await?; - - tokio::spawn(tokio::task::unconstrained(driver.into_future())); + let mut client = SharedClient::new(DB_URL.to_string()).await?; - let fortune = client.prepare("SELECT * FROM fortune", &[]).await?.leak(); + let fortune = client.prepare_cached("SELECT * FROM fortune", &[]).await?; let world = client - .prepare("SELECT * FROM world WHERE id=$1", &[]) - .await? - .leak(); + .prepare_cached("SELECT * FROM world WHERE id=$1", &[]) + .await?; let mut updates = HashMap::default(); @@ -59,7 +48,7 @@ pub async fn create() -> HandleResult { q.pop(); q.push(')'); - let st = client.prepare(&q, &[]).await?.leak(); + let st = client.prepare_cached(&q, &[]).await?; updates.insert(num, st); } @@ -94,11 +83,11 @@ impl Client { .try_next() .await? .map(|row| World::new(row.get_raw(0), row.get_raw(1))) - .ok_or_else(|| format!("World does not exist").into()) + .ok_or_else(|| "World does not exist".into()) } pub async fn get_worlds(&self, num: u16) -> HandleResult> { - let mut pipe = self.client.pipeline(); + let mut pipe = Pipeline::new(); { let mut rng = self.borrow_rng_mut(); @@ -108,7 +97,7 @@ impl Client { let mut worlds = Vec::new(); worlds.reserve(num as usize); - let mut res = pipe.run().await?; + let mut res = self.client.pipeline(pipe).await?; while let Some(mut item) = res.try_next().await? { while let Some(row) = item.try_next().await? { worlds.push(World::new(row.get_raw(0), row.get_raw(1))) @@ -124,7 +113,7 @@ impl Client { let mut params = Vec::new(); params.reserve(len * 3); - let mut pipe = self.client.pipeline(); + let mut pipe = Pipeline::new(); { let mut rng = self.borrow_rng_mut(); @@ -144,7 +133,7 @@ impl Client { worlds.reserve(len); let mut r_ids = params.into_iter().skip(1).step_by(2); - let mut res = pipe.run().await?; + let mut res = self.client.pipeline(pipe).await?; while let Some(mut item) = res.try_next().await? { while let Some(row) = item.try_next().await? { let r_id = r_ids.next().unwrap(); From d161a808720579a9f0373bdbc7b480fad980cb87 Mon Sep 17 00:00:00 2001 From: fakeshadow <24548779@qq.com> Date: Sat, 9 Mar 2024 22:42:28 +0800 Subject: [PATCH 3/3] fix build. --- frameworks/Rust/xitca-web/Cargo.lock | 2 +- frameworks/Rust/xitca-web/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/Rust/xitca-web/Cargo.lock b/frameworks/Rust/xitca-web/Cargo.lock index efd950e830a..fd001345246 100644 --- a/frameworks/Rust/xitca-web/Cargo.lock +++ b/frameworks/Rust/xitca-web/Cargo.lock @@ -1260,7 +1260,7 @@ dependencies = [ [[package]] name = "xitca-postgres" version = "0.1.0" -source = "git+https://github.com/HFQR/xitca-web.git?rev=4309a6d8f0c8f03b24fe1e74f439b8cb377799c1#4309a6d8f0c8f03b24fe1e74f439b8cb377799c1" +source = "git+https://github.com/HFQR/xitca-web.git?rev=13a28c51a2f6e23e4e6b96e508a8af1e5e79d0b6#13a28c51a2f6e23e4e6b96e508a8af1e5e79d0b6" dependencies = [ "fallible-iterator", "percent-encoding", diff --git a/frameworks/Rust/xitca-web/Cargo.toml b/frameworks/Rust/xitca-web/Cargo.toml index e5e88e1961f..8717e681c50 100644 --- a/frameworks/Rust/xitca-web/Cargo.toml +++ b/frameworks/Rust/xitca-web/Cargo.toml @@ -92,5 +92,5 @@ codegen-units = 1 panic = "abort" [patch.crates-io] -xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "4309a6d8f0c8f03b24fe1e74f439b8cb377799c1" } +xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "13a28c51a2f6e23e4e6b96e508a8af1e5e79d0b6" } mio = { git = "https://github.com/fakeshadow/mio.git", rev = "52b72d372bfe5807755b7f5e3e1edf282954d6ba" }