Skip to main content

Mountain/RPC/CocoonService/Terminal/
AcceptTerminalProcessData.rs

1#![allow(non_snake_case)]
2
3//! Forward terminal stdout bytes to Sky on `sky://terminal/data` as
4//! lossy-decoded UTF-8.
5
6use serde_json::json;
7use tauri::Emitter;
8use tonic::{Response, Status};
9
10use crate::{
11	RPC::CocoonService::CocoonServiceImpl,
12	Vine::Generated::{Empty, TerminalDataNotification},
13	dev_log,
14};
15
16pub async fn Fn(Service:&CocoonServiceImpl, Request:TerminalDataNotification) -> Result<Response<Empty>, Status> {
17	dev_log!(
18		"cocoon",
19		"[CocoonService] Terminal data for {}: {} bytes",
20		Request.terminal_id,
21		Request.data.len()
22	);
23
24	let DataString = String::from_utf8_lossy(&Request.data).to_string();
25	let _ = Service
26		.environment
27		.ApplicationHandle
28		.emit("sky://terminal/data", json!({ "id": Request.terminal_id, "data": DataString }));
29
30	Ok(Response::new(Empty {}))
31}