relm4/channel/shutdown/
mod.rs

1// Copyright 2022 System76 <info@system76.com>
2// SPDX-License-Identifier: MIT or Apache-2.0
3
4mod attached;
5mod receiver;
6mod sender;
7
8use tokio::sync::broadcast;
9
10pub use attached::AttachedShutdown;
11pub use receiver::ShutdownReceiver;
12pub use sender::ShutdownSender;
13
14/// Creates a broadcasting shutdown channel.
15///
16/// The sending side is responsible for initiating a shutdown.
17/// The receiving side is responsible for responding to shutdowns.
18#[must_use]
19pub fn channel() -> (ShutdownSender, ShutdownReceiver) {
20    let (sender, receiver) = broadcast::channel(1);
21    (ShutdownSender { sender }, ShutdownReceiver { receiver })
22}