Browse Source

[xitca-web]update dep. (#7379)

fakeshadow 3 years ago
parent
commit
01c48a077d

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

@@ -17,18 +17,18 @@ xitca-server = "0.1"
 xitca-service = "0.1"
 xitca-web = { version = "0.1", features = ["json"] }
 xitca-postgres = "0.1"
+xitca-unsafe-collection = "0.1"
 
-ahash = { version = "0.7.1", features = ["compile-time-rng"] }
 atoi = "1.0.0"
 core_affinity = "0.5.10"
 diesel = { version = "2.0.0-rc.0", default-features = false, features = ["i-implement-a-third-party-backend-and-opt-into-breaking-changes"]}
 diesel-async = { version = "0.1.0", features = ["postgres"], default-features = false }
 futures-util = { version = "0.3.18", default-features = false, features = ["alloc"] }
 mimalloc = { version = "0.1.29", default-features = false }
-rand = { version = "0.8.5", default-features = false, features = ["min_const_gen", "small_rng"] }
+rand = { version = "0.8.5", default-features = false, features = ["min_const_gen", "nightly", "small_rng"] }
 sailfish = "0.3.4"
 serde = "1"
-simd-json = "0.4.15"
+simd-json = { version = "0.4.15", features = ["hints", "known-key"] }
 tang-rs = "0.2"
 tokio = { version = "1.18.0", features = ["macros", "rt"] }
 
@@ -39,12 +39,12 @@ codegen-units = 1
 panic = "abort"
 
 [patch.crates-io]
-xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
-xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
-xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
-xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
-xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
-xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
-xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "ee542a12f07b9aec28c98688412ef432e467453e" }
+xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
+xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
+xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
+xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
+xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
+xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
+xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "bcfd33345a77a2e4b291633af9fa340ca6d5f524" }
 
 diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "d74eefd18b7e738b02aa2fa5f8bfd934b1d4db95" }

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

@@ -1,9 +1,9 @@
-use std::{cell::RefCell, error::Error, fmt::Write};
+use std::{cell::RefCell, collections::HashMap, error::Error, fmt::Write};
 
-use ahash::AHashMap;
 use futures_util::stream::{FuturesUnordered, StreamExt, TryStreamExt};
 use rand::{rngs::SmallRng, Rng, SeedableRng};
 use xitca_postgres::{Postgres, Statement, ToSql};
+use xitca_unsafe_collection::no_hash::NoHashBuilder;
 
 use super::ser::{Fortune, Fortunes, World};
 
@@ -12,7 +12,7 @@ pub struct Client {
     rng: RefCell<SmallRng>,
     fortune: Statement,
     world: Statement,
-    updates: AHashMap<u16, Statement>,
+    updates: HashMap<u16, Statement, NoHashBuilder>,
 }
 
 impl Drop for Client {
@@ -46,7 +46,7 @@ pub async fn create(config: &str) -> Client {
         .unwrap()
         .leak();
 
-    let mut updates = AHashMap::new();
+    let mut updates = HashMap::default();
 
     for num in 1..=500u16 {
         let mut pl = 1;

+ 10 - 12
frameworks/Rust/xitca-web/src/main.rs

@@ -14,9 +14,8 @@ use std::{
 };
 
 use xitca_http::{
-    body::ResponseBody,
-    bytes::BufMutWriter,
-    bytes::BytesMut,
+    body::Once,
+    bytes::{BufMutWriter, Bytes, BytesMut},
     config::HttpServiceConfig,
     h1::RequestBody,
     http::{
@@ -42,9 +41,8 @@ use self::db::Client;
 use self::ser::Message;
 use self::util::{QueryParse, SERVER_HEADER_VALUE};
 
-type Response = http::Response<ResponseBody>;
+type Response = http::Response<Once<Bytes>>;
 type Request = request::Request<RequestBody>;
-type State = AppState<Client>;
 
 type Ctx<'a> = Context<'a, Request, State>;
 
@@ -113,7 +111,7 @@ where
 
 async fn plain_text(ctx: Ctx<'_>) -> Result<Response, Box<dyn Error>> {
     let (req, _) = ctx.into_parts();
-    let mut res = req.into_response("Hello, World!");
+    let mut res = req.into_response(Bytes::from_static(b"Hello, World!"));
     res.headers_mut().append(CONTENT_TYPE, TEXT);
     Ok(res)
 }
@@ -133,7 +131,7 @@ async fn fortunes(ctx: Ctx<'_>) -> Result<Response, Box<dyn Error>> {
     let (req, state) = ctx.into_parts();
     use sailfish::TemplateOnce;
     let fortunes = state.client().tell_fortune().await?.render_once()?;
-    let mut res = req.into_response(fortunes);
+    let mut res = req.into_response(Bytes::from(fortunes));
     res.headers_mut().append(CONTENT_TYPE, TEXT_HTML_UTF8);
     Ok(res)
 }
@@ -164,14 +162,14 @@ where
     Ok(res)
 }
 
-struct AppState<C> {
-    client: C,
+struct State {
+    client: Client,
     // a re-usable buffer for write response data.
     write_buf: RefCell<BytesMut>,
 }
 
-impl<C> AppState<C> {
-    fn new(client: C) -> Self {
+impl State {
+    fn new(client: Client) -> Self {
         let write_buf = RefCell::new(BytesMut::new());
         Self { client, write_buf }
     }
@@ -180,7 +178,7 @@ impl<C> AppState<C> {
         self.write_buf.borrow_mut()
     }
 
-    fn client(&self) -> &C {
+    fn client(&self) -> &Client {
         &self.client
     }
 }

+ 7 - 11
frameworks/Rust/xitca-web/src/main_diesel.rs

@@ -9,7 +9,7 @@ mod schema;
 mod ser;
 mod util;
 
-use std::convert::Infallible;
+use std::{convert::Infallible, io};
 
 use serde::Serialize;
 use xitca_web::{
@@ -23,7 +23,6 @@ use xitca_web::{
 };
 
 use self::db_diesel::{create, DieselPool};
-use self::ser::Message;
 use self::util::{QueryParse, SERVER_HEADER_VALUE};
 
 type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
@@ -31,7 +30,7 @@ type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
 type Request<'a> = WebRequest<'a, DieselPool>;
 
 #[tokio::main(flavor = "current_thread")]
-async fn main() -> Result<(), Error> {
+async fn main() -> io::Result<()> {
     let config = "postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world";
 
     HttpServer::new(move || {
@@ -48,7 +47,6 @@ async fn main() -> Result<(), Error> {
     .bind("0.0.0.0:8080")?
     .run()
     .await
-    .map_err(Into::into)
 }
 
 async fn middleware_fn<S, E>(service: &S, mut ctx: Request<'_>) -> Result<WebResponse, Infallible>
@@ -67,12 +65,12 @@ where
     Ok(res)
 }
 
-async fn plain_text(_: &Request<'_>) -> Result<&'static str, Error> {
+async fn plain_text() -> Result<&'static str, Error> {
     Ok("Hello, World!")
 }
 
-async fn json(_: &Request<'_>) -> Result<Json<impl Serialize>, Error> {
-    Ok(Json(Message::new()))
+async fn json() -> Result<Json<impl Serialize>, Error> {
+    Ok(Json(ser::Message::new()))
 }
 
 async fn db(StateRef(pool): StateRef<'_, DieselPool>) -> Result<Json<impl Serialize>, Error> {
@@ -90,8 +88,7 @@ async fn queries(
     UriRef(uri): UriRef<'_>,
 ) -> Result<Json<impl Serialize>, Error> {
     let num = uri.query().parse_query();
-    let worlds = pool.get_worlds(num).await?;
-    Ok(Json(worlds))
+    pool.get_worlds(num).await.map(Json)
 }
 
 async fn updates(
@@ -99,6 +96,5 @@ async fn updates(
     UriRef(uri): UriRef<'_>,
 ) -> Result<Json<impl Serialize>, Error> {
     let num = uri.query().parse_query();
-    let worlds = pool.update(num).await?;
-    Ok(Json(worlds))
+    pool.update(num).await.map(Json)
 }

+ 2 - 2
frameworks/Rust/xitca-web/xitca-web-diesel.dockerfile

@@ -1,9 +1,9 @@
-FROM rust:1.60
+FROM rust:1.61
 
 ADD ./ /xitca-web
 WORKDIR /xitca-web
 
-RUN rustup default nightly-2022-04-27
+RUN rustup default nightly-2022-05-30
 RUN cargo clean
 RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web-diesel
 

+ 2 - 2
frameworks/Rust/xitca-web/xitca-web.dockerfile

@@ -1,9 +1,9 @@
-FROM rust:1.60
+FROM rust:1.61
 
 ADD ./ /xitca-web
 WORKDIR /xitca-web
 
-RUN rustup default nightly-2022-04-27
+RUN rustup default nightly-2022-05-30
 RUN cargo clean
 RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web