From ca703d9cec12420c3821400e81af31b9a6104478 Mon Sep 17 00:00:00 2001 From: Luca Palmieri Date: Wed, 2 Feb 2022 02:04:37 +0000 Subject: [PATCH] Update basics/run-in-thread to v4 (#485) --- Cargo.lock | 5 +++-- basics/run-in-thread/Cargo.toml | 5 +++-- basics/run-in-thread/src/main.rs | 34 +++++++++++++++----------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 36f7194b..f865e830 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4883,8 +4883,9 @@ dependencies = [ name = "run-in-thread" version = "1.0.0" dependencies = [ - "actix-web 3.3.3", - "env_logger 0.8.4", + "actix-web 4.0.0-beta.21", + "env_logger 0.9.0", + "log", ] [[package]] diff --git a/basics/run-in-thread/Cargo.toml b/basics/run-in-thread/Cargo.toml index 226e00fb..86b1750b 100644 --- a/basics/run-in-thread/Cargo.toml +++ b/basics/run-in-thread/Cargo.toml @@ -5,5 +5,6 @@ edition = "2021" description = "Run actix-web in separate thread" [dependencies] -actix-web = "3" -env_logger = "0.8" +actix-web = "4.0.0-beta.21" +log = "0.4" +env_logger = "0.9.0" diff --git a/basics/run-in-thread/src/main.rs b/basics/run-in-thread/src/main.rs index bb7c63d5..bd41ed7d 100644 --- a/basics/run-in-thread/src/main.rs +++ b/basics/run-in-thread/src/main.rs @@ -1,18 +1,17 @@ use std::sync::mpsc; use std::{thread, time}; -use actix_web::{dev::Server, middleware, rt, web, App, HttpRequest, HttpServer}; +use actix_web::dev::ServerHandle; +use actix_web::{middleware, rt, web, App, HttpRequest, HttpServer}; async fn index(req: HttpRequest) -> &'static str { - println!("REQ: {:?}", req); + log::info!("REQ: {:?}", req); "Hello world!" } -fn run_app(tx: mpsc::Sender) -> std::io::Result<()> { - let mut sys = rt::System::new("test"); - +async fn run_app(tx: mpsc::Sender) -> std::io::Result<()> { // srv is server controller type, `dev::Server` - let srv = HttpServer::new(|| { + let server = HttpServer::new(|| { App::new() // enable logger .wrap(middleware::Logger::default()) @@ -22,11 +21,9 @@ fn run_app(tx: mpsc::Sender) -> std::io::Result<()> { .bind("127.0.0.1:8080")? .run(); - // send server controller to main thread - let _ = tx.send(srv.clone()); - - // run future - sys.block_on(srv) + // Send server handle back to the main thread + let _ = tx.send(server.handle()); + server.await } fn main() { @@ -35,17 +32,18 @@ fn main() { let (tx, rx) = mpsc::channel(); - println!("START SERVER"); + log::info!("START SERVER"); thread::spawn(move || { - let _ = run_app(tx); + let future = run_app(tx); + rt::System::new().block_on(future) }); - let srv = rx.recv().unwrap(); + let server_handle = rx.recv().unwrap(); - println!("WAITING 10 SECONDS"); + log::info!("WAITING 10 SECONDS"); thread::sleep(time::Duration::from_secs(10)); - println!("STOPPING SERVER"); - // init stop server and wait until server gracefully exit - rt::System::new("").block_on(srv.stop(true)); + log::info!("STOPPING SERVER"); + // Send a stop signal to the server, waiting for it to exit gracefully + rt::System::new().block_on(server_handle.stop(true)); }