use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum ConnectMode {
CreateOrAttach,
CreateOnly,
AttachOnly,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum ClientMsg {
Input(Vec<u8>),
Resize { cols: u16, rows: u16 },
Detach,
ListSessions,
Connect { name: String, history: usize, cols: u16, rows: u16, mode: ConnectMode },
KillSession { name: String },
RefreshScreen,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum ServerMsg {
ScrollbackLine(Vec<u8>),
ScreenUpdate(Vec<u8>),
History(Vec<Vec<u8>>),
SessionList(Vec<SessionInfo>),
SessionEnded,
Error(String),
Connected { name: String, new_session: bool },
SessionKilled { name: String },
Passthrough(Vec<u8>),
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct SessionInfo {
pub name: String,
pub pid: u32,
pub cols: u16,
pub rows: u16,
}