use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecRequest {
pub cmd: String,
#[serde(default)]
pub args: Vec<String>,
#[serde(default)]
pub env: Vec<String>,
#[serde(default)]
pub cwd: Option<String>,
#[serde(default)]
pub user: Option<String>,
#[serde(default)]
pub tty: bool,
#[serde(default = "default_rows")]
pub rows: u16,
#[serde(default = "default_cols")]
pub cols: u16,
#[serde(default)]
pub rlimits: Vec<ExecRlimit>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecRlimit {
pub resource: String,
pub soft: u64,
pub hard: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecStarted {
pub pid: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecStdin {
#[serde(with = "serde_bytes")]
pub data: Vec<u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecStdout {
#[serde(with = "serde_bytes")]
pub data: Vec<u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecStderr {
#[serde(with = "serde_bytes")]
pub data: Vec<u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecExited {
pub code: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecResize {
pub rows: u16,
pub cols: u16,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecSignal {
pub signal: i32,
}
fn default_rows() -> u16 {
24
}
fn default_cols() -> u16 {
80
}