1
0
mirror of https://github.com/fafhrd91/actix-net synced 2025-01-18 23:21:50 +01:00

actix-rt: Add Arbiter::is_running helper and fix System::is_set doc

`Arbiter::is_running` can be used to check if the current even-loop is currently
running; which should also work after the system has stopped. `System::is_set`
was updated to reflect what it actually does, it tells if the event loop has
started, which alone can't tell if it has stopped.

Signed-off-by: Jonathas-Conceicao <jadoliveira@inf.ufpel.edu.br>
This commit is contained in:
Jonathas-Conceicao 2020-04-04 19:05:08 -03:00 committed by Jonathas Conceição
parent 69e8df9d62
commit 783880bb0a
4 changed files with 25 additions and 2 deletions

View File

@ -2,7 +2,11 @@
## [TBD] - [TBD] ## [TBD] - [TBD]
- Expose `System::is_set` to check if current system is running Added
- Expose `System::is_set` to check if current system has ben started
- Add `Arbiter::is_running` to check if event loop is running
- Add `Arbiter::local_join` associated function to get be able to `await` for spawned futures - Add `Arbiter::local_join` associated function to get be able to `await` for spawned futures

View File

@ -89,6 +89,11 @@ impl Arbiter {
}) })
} }
/// Check if current arbiter is running.
pub fn is_running() -> bool {
RUNNING.with(|cell| cell.get())
}
/// Stop arbiter from continuing it's event loop. /// Stop arbiter from continuing it's event loop.
pub fn stop(&self) { pub fn stop(&self) {
let _ = self.sender.unbounded_send(ArbiterCommand::Stop); let _ = self.sender.unbounded_send(ArbiterCommand::Stop);

View File

@ -79,7 +79,7 @@ impl System {
}) })
} }
/// Check if current system is running. /// Check if current system is set, i.e., as already been started.
pub fn is_set() -> bool { pub fn is_set() -> bool {
CURRENT.with(|cell| cell.borrow().is_some()) CURRENT.with(|cell| cell.borrow().is_some())
} }

View File

@ -1,5 +1,19 @@
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
#[test]
fn start_and_stop() {
actix_rt::System::new("start_and_stop").block_on(async move {
assert!(
actix_rt::Arbiter::is_running(),
"System doesn't seem to have started"
);
});
assert!(
!actix_rt::Arbiter::is_running(),
"System doesn't seem to have stopped"
);
}
#[test] #[test]
fn await_for_timer() { fn await_for_timer() {
let time = Duration::from_secs(2); let time = Duration::from_secs(2);