Структура Ctrl Shutdown
pub struct CtrlShutdown { /* private fields */ }
signal.Представляет слушатель, который получает уведомления «ctrl-shutdown», отправленные процессу через SetConsoleCtrlHandler.
Уведомление, отправленное этому процессу, доставляется всем слушателям, ожидающим это событие. Кроме того, уведомления объединяются, если они обрабатываются недостаточно быстро. Это означает, что если два уведомления получены одно за другим, слушатель может получить только один элемент, соответствующий обоим уведомлениям.
Реализации
impl CtrlShutdown
pub async fn recv(&mut self) -> Option<()>
Получает следующее событие уведомления о сигнале.
Хотя этот метод возвращает Option<()>, фактически он никогда не вернёт None. Эта возможность была добавлена случайно, и её удаление привело бы к несовместимому изменению.
Примеры
use tokio::signal::windows::ctrl_shutdown;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// A listener of CTRL-SHUTDOWN events.
let mut signal = ctrl_shutdown()?;
// Print whenever a CTRL-SHUTDOWN event is received.
signal.recv().await;
println!("got CTRL-SHUTDOWN. Cleaning up before exiting");
Ok(())
}pub fn poll_recv(&mut self, cx: &mut Context<'_>) -> Poll<Option<()>>
Ожидает получения следующего события уведомления о сигнале вне контекста async.
Хотя этот метод возвращает Option<()>, фактически он никогда не вернёт None. Эта возможность была добавлена случайно, и её удаление привело бы к несовместимому изменению.
Примеры
Ожидание сигнала из вручную реализованного future
use std::pin::Pin;
use std::future::Future;
use std::task::{Context, Poll};
use tokio::signal::windows::CtrlShutdown;
struct MyFuture {
ctrl_shutdown: CtrlShutdown,
}
impl Future for MyFuture {
type Output = Option<()>;
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
println!("polling MyFuture");
self.ctrl_shutdown.poll_recv(cx)
}
}Реализации трейтов
Реализации автоматических трейтов
impl !RefUnwindSafe for CtrlShutdown
impl !UnwindSafe for CtrlShutdown
impl Freeze for CtrlShutdown
impl Send for CtrlShutdown
impl Sync for CtrlShutdown
impl Unpin for CtrlShutdown
impl UnsafeUnpin for CtrlShutdown
Общие реализации
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/signal/windows/struct.CtrlShutdown.html