diff --git a/actix-server/examples/tcp-echo.rs b/actix-server/examples/tcp-echo.rs index 930ebf0a..52ae5349 100644 --- a/actix-server/examples/tcp-echo.rs +++ b/actix-server/examples/tcp-echo.rs @@ -82,7 +82,7 @@ async fn run() -> io::Result<()> { ok(size) }) })? - .workers(1) + .workers(2) .run() .await } diff --git a/actix-server/src/handle.rs b/actix-server/src/handle.rs index 8e6e1e9b..b535e2bf 100644 --- a/actix-server/src/handle.rs +++ b/actix-server/src/handle.rs @@ -46,7 +46,7 @@ impl ServerHandle { let _ = self.cmd_tx.send(ServerCommand::Stop { graceful, completion: Some(tx), - force_exit: false, + force_system_stop: false, }); async { diff --git a/actix-server/src/server.rs b/actix-server/src/server.rs index cae83ce4..fec3b06e 100644 --- a/actix-server/src/server.rs +++ b/actix-server/src/server.rs @@ -8,7 +8,7 @@ use std::{ use actix_rt::{time::sleep, System}; use futures_core::{future::BoxFuture, Stream}; -use futures_util::stream::StreamExt; +use futures_util::stream::StreamExt as _; use log::{error, info}; use tokio::sync::{mpsc::UnboundedReceiver, oneshot}; @@ -48,8 +48,8 @@ pub(crate) enum ServerCommand { /// Return channel to notify caller that shutdown is complete. completion: Option>, - /// Force system exit, overriding `ServerBuilder::system_exit()`. - force_exit: bool, + /// Force System exit when true, overriding `ServerBuilder::system_exit()` if it is false. + force_system_stop: bool, }, } @@ -61,8 +61,8 @@ pub(crate) enum ServerCommand { /// Creates a worker per CPU core (or the number specified in [`ServerBuilder::workers`]) and /// distributes connections with a round-robin strategy. /// -/// The [Server] must be awaited in order to run. -/// It will resolve when the server has fully shut down. +/// The [Server] must be awaited or polled in order to start running. It will resolve when the +/// server has fully shut down. /// /// # Shutdown Signals /// On UNIX systems, `SIGQUIT` will start a graceful shutdown and `SIGTERM` or `SIGINT` will start a @@ -120,7 +120,7 @@ pub(crate) enum ServerCommand { /// .await /// } /// ``` -#[must_use = "futures do nothing unless you `.await` or poll them"] +#[must_use = "Server does nothing unless you `.await` or poll it"] pub struct Server { handle: ServerHandle, fut: BoxFuture<'static, io::Result<()>>, @@ -139,7 +139,7 @@ impl Server { } } - /// Get a handle for ServerFuture that can be used to change state of actix server. + /// Get a `Server` handle that can be used issue commands and change it's state. /// /// See [ServerHandle](ServerHandle) for usage. pub fn handle(&self) -> ServerHandle { @@ -160,9 +160,9 @@ pub struct ServerInner { worker_handles: Vec, worker_config: ServerWorkerConfig, services: Vec>, - exit: bool, waker_queue: WakerQueue, - stopped: bool, + system_stop: bool, + stopping: bool, } impl ServerInner { @@ -171,7 +171,8 @@ impl ServerInner { while let Some(cmd) = mux.next().await { this.handle_cmd(cmd).await; - if this.stopped { + + if this.stopping { break; } } @@ -216,8 +217,8 @@ impl ServerInner { worker_handles, worker_config: builder.worker_config, services: builder.factories, - exit: builder.exit, - stopped: false, + system_stop: builder.exit, + stopping: false, }; Ok((server, mux)) @@ -238,9 +239,9 @@ impl ServerInner { ServerCommand::Stop { graceful, completion, - force_exit, + force_system_stop, } => { - self.stopped = true; + self.stopping = true; // stop accept thread self.waker_queue.wake(WakerInterest::Stop); @@ -261,7 +262,7 @@ impl ServerInner { let _ = tx.send(()); } - if self.exit || force_exit { + if self.system_stop || force_system_stop { sleep(Duration::from_millis(300)).await; System::try_current().as_ref().map(System::stop); } @@ -308,7 +309,7 @@ impl ServerInner { ServerCommand::Stop { graceful: false, completion: None, - force_exit: true, + force_system_stop: true, } } @@ -317,7 +318,7 @@ impl ServerInner { ServerCommand::Stop { graceful: true, completion: None, - force_exit: true, + force_system_stop: true, } } @@ -326,7 +327,7 @@ impl ServerInner { ServerCommand::Stop { graceful: false, completion: None, - force_exit: true, + force_system_stop: true, } } }