Skip to content

Commit 87c2486

Browse files
committed
add win interruption using tokio::windows
Signed-off-by: Philippe Llerena <[email protected]>
1 parent 8329333 commit 87c2486

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

crates/spfs-cli/cmd-monitor/src/cmd_monitor.rs

+19-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ use spfs::Error;
1212
use spfs_cli_common as cli;
1313
use spfs_cli_common::CommandName;
1414
use tokio::io::AsyncReadExt;
15+
#[cfg(unix)]
1516
use tokio::signal::unix::{signal, SignalKind};
17+
#[cfg(windows)]
18+
use tokio::signal::windows::ctrl_c;
1619
use tokio::time::timeout;
1720

1821
fn main() -> Result<()> {
@@ -86,11 +89,10 @@ impl CmdMonitor {
8689
rt.block_on(self.wait_for_ready());
8790
// clean up this runtime and all other threads before detaching
8891
drop(rt);
89-
92+
#[cfg(unix)]
9093
nix::unistd::daemon(self.no_chdir, self.no_close)
9194
.into_diagnostic()
9295
.wrap_err("Failed to daemonize the monitor process")?;
93-
9496
#[cfg(feature = "sentry")]
9597
{
9698
// Initialize sentry after the call to `daemon` so it is safe for
@@ -142,12 +144,27 @@ impl CmdMonitor {
142144
}
143145

144146
pub async fn run_async(&mut self) -> Result<i32> {
147+
#[cfg(unix)]
145148
let mut interrupt = signal(SignalKind::interrupt())
146149
.map_err(|err| Error::process_spawn_error("signal()", err, None))?;
150+
#[cfg(unix)]
151+
let interrupt = signal(SignalKind::interrupt())
152+
.map_err(|err| Error::process_spawn_error("signal()", err, None))?;
153+
#[cfg(windows)]
154+
let mut interrupt = ctrl_c()
155+
.map_err(|err| Error::process_spawn_error("ctrl_c()", err, None))?;
156+
#[cfg(unix)]
147157
let mut quit = signal(SignalKind::quit())
148158
.map_err(|err| Error::process_spawn_error("signal()", err, None))?;
159+
#[cfg(windows)]
160+
let mut quit = ctrl_c()
161+
.map_err(|err| Error::process_spawn_error("ctrl_c()", err, None))?;
162+
#[cfg(unix)]
149163
let mut terminate = signal(SignalKind::terminate())
150164
.map_err(|err| Error::process_spawn_error("signal()", err, None))?;
165+
#[cfg(windows)]
166+
let mut terminate = ctrl_c()
167+
.map_err(|err| Error::process_spawn_error("ctrl_c()", err, None))?;
151168

152169
let repo = spfs::open_repository(&self.runtime_storage).await?;
153170
let storage = spfs::runtime::Storage::new(repo)?;

0 commit comments

Comments
 (0)