ssh remote: Shutdown SSH & server process correctly on app quit (#19210)
Release Notes: - N/A Co-authored-by: Bennet <bennet@zed.dev>
This commit is contained in:
parent
62de03f286
commit
be7b24fcf7
2 changed files with 65 additions and 42 deletions
|
@ -746,17 +746,6 @@ impl Project {
|
|||
});
|
||||
cx.subscribe(&lsp_store, Self::on_lsp_store_event).detach();
|
||||
|
||||
cx.on_release(|this, cx| {
|
||||
if let Some(ssh_client) = this.ssh_client.as_ref() {
|
||||
ssh_client
|
||||
.read(cx)
|
||||
.to_proto_client()
|
||||
.send(proto::ShutdownRemoteServer {})
|
||||
.log_err();
|
||||
}
|
||||
})
|
||||
.detach();
|
||||
|
||||
cx.subscribe(&ssh, Self::on_ssh_event).detach();
|
||||
cx.observe(&ssh, |_, _, cx| cx.notify()).detach();
|
||||
|
||||
|
@ -769,7 +758,22 @@ impl Project {
|
|||
join_project_response_message_id: 0,
|
||||
client_state: ProjectClientState::Local,
|
||||
client_subscriptions: Vec::new(),
|
||||
_subscriptions: vec![cx.on_release(Self::release)],
|
||||
_subscriptions: vec![
|
||||
cx.on_release(Self::release),
|
||||
cx.on_app_quit(|this, cx| {
|
||||
let shutdown = this.ssh_client.take().and_then(|client| {
|
||||
client
|
||||
.read(cx)
|
||||
.shutdown_processes(Some(proto::ShutdownRemoteServer {}))
|
||||
});
|
||||
|
||||
cx.background_executor().spawn(async move {
|
||||
if let Some(shutdown) = shutdown {
|
||||
shutdown.await;
|
||||
}
|
||||
})
|
||||
}),
|
||||
],
|
||||
active_entry: None,
|
||||
snippets,
|
||||
languages,
|
||||
|
@ -1094,6 +1098,20 @@ impl Project {
|
|||
}
|
||||
|
||||
fn release(&mut self, cx: &mut AppContext) {
|
||||
if let Some(client) = self.ssh_client.take() {
|
||||
let shutdown = client
|
||||
.read(cx)
|
||||
.shutdown_processes(Some(proto::ShutdownRemoteServer {}));
|
||||
|
||||
cx.background_executor()
|
||||
.spawn(async move {
|
||||
if let Some(shutdown) = shutdown {
|
||||
shutdown.await;
|
||||
}
|
||||
})
|
||||
.detach()
|
||||
}
|
||||
|
||||
match &self.client_state {
|
||||
ProjectClientState::Local => {}
|
||||
ProjectClientState::Shared { .. } => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue