1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Async signal delivery.
//!
//! Two backends, selected the same way as [`crate::io`]/[`crate::fs`]/
//! [`crate::stream`]:
//! - `native` (default): Unix uses a self-pipe fed by a minimal async-
//! signal-safe `sigaction` handler, drained by a dedicated reader
//! thread that broadcasts to every registered listener (see
//! [`registry::ListenerRegistry`]) — no `Mutex` anywhere in the
//! delivery path. Windows uses `SetConsoleCtrlHandler` for Ctrl+C /
//! Ctrl+Break (there's no POSIX-signal equivalent on Windows, so this
//! backend's surface is intentionally narrower there — see
//! `signal::windows`'s module doc).
//! - `tokio` (when `native` is off): thin wrappers over
//! `tokio::signal::unix`/`tokio::signal::windows`.
//!
//! No `DtactCompat` layer here — signals aren't a byte stream, there's
//! nothing for `AsyncRead`/`AsyncWrite` to bridge.
pub use *;
pub use *;
// NOTE: named `tokio_backend`, not `tokio` — see `io::mod`'s doc for why a
// local module literally named `tokio` shadows the extern crate.
pub use *;