Mountain/RPC/CocoonService/Terminal/
TerminalInput.rs1
2use tonic::{Response, Status};
5use CommonLibrary::Terminal::TerminalProvider::TerminalProvider;
6
7use crate::{
8 RPC::CocoonService::CocoonServiceImpl,
9 Vine::Generated::{Empty, TerminalInputRequest},
10 dev_log,
11};
12
13pub async fn Fn(Service:&CocoonServiceImpl, Request:TerminalInputRequest) -> Result<Response<Empty>, Status> {
14 let TerminalIdentifier = Request.terminal_id as u64;
15
16 dev_log!(
17 "cocoon",
18 "[CocoonService] terminal_input: id={} bytes={}",
19 TerminalIdentifier,
20 Request.data.len()
21 );
22
23 let Text = String::from_utf8_lossy(&Request.data).into_owned();
24
25 match Service.environment.SendTextToTerminal(TerminalIdentifier, Text).await {
26 Ok(()) => Ok(Response::new(Empty {})),
27
28 Err(Error) => {
29 dev_log!(
30 "cocoon",
31 "warn: [CocoonService] terminal_input failed id={}: {}",
32 TerminalIdentifier,
33 Error
34 );
35
36 Err(Status::not_found(format!("terminal_input: {}", Error)))
37 },
38 }
39}