use serde::{Deserialize, Serialize};
pub const PROTOCOL_VERSION: u32 = 1;
#[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 { version: u32 },
Connect {
version: u32,
name: String,
history: usize,
cols: u16,
rows: u16,
mode: ConnectMode,
},
KillSession { version: u32, name: String },
RefreshScreen,
}
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum ServerMsg {
ScreenUpdate(Vec<u8>),
History(Vec<Vec<u8>>),
SessionList(Vec<SessionInfo>),
SessionEnded { exit_code: Option<i32> },
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,
}