Skip to main content

Mountain/RPC/CocoonService/Terminal/
CloseTerminal.rs

1//! Dispose a PTY via `TerminalProvider::DisposeTerminal`.
2
3use tonic::{Response, Status};
4use CommonLibrary::Terminal::TerminalProvider::TerminalProvider;
5use ::Vine::Generated::{CloseTerminalRequest, Empty};
6
7use crate::{RPC::CocoonService::CocoonServiceImpl, dev_log};
8
9pub async fn Fn(Service:&CocoonServiceImpl, Request:CloseTerminalRequest) -> Result<Response<Empty>, Status> {
10	let TerminalIdentifier = Request.terminal_id as u64;
11
12	dev_log!("cocoon", "[CocoonService] close_terminal: id={}", TerminalIdentifier);
13
14	match Service.environment.DisposeTerminal(TerminalIdentifier).await {
15		Ok(()) => Ok(Response::new(Empty {})),
16
17		Err(Error) => {
18			dev_log!(
19				"cocoon",
20				"warn: [CocoonService] close_terminal failed id={}: {}",
21				TerminalIdentifier,
22				Error
23			);
24
25			Err(Status::internal(format!("close_terminal: {}", Error)))
26		},
27	}
28}