use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use crate::runner::RunOutput;
pub const PROTOCOL_VERSION: u32 = 1;
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
pub struct RequestEnvelope {
pub version: u32,
pub request: Request,
}
impl RequestEnvelope {
pub fn new(request: Request) -> Self {
Self {
version: PROTOCOL_VERSION,
request,
}
}
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
pub enum Request {
Ping,
Stop,
RunBinding {
name: String,
config_path: PathBuf,
verbose: u8,
},
RunApp {
app: String,
verbose: u8,
},
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
pub struct ResponseEnvelope {
pub version: u32,
pub response: Response,
}
impl ResponseEnvelope {
pub fn new(response: Response) -> Self {
Self {
version: PROTOCOL_VERSION,
response,
}
}
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
pub enum Response {
Pong(Status),
Run(RunOutput),
Stopped,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
pub struct Status {
pub pid: u32,
pub socket_path: PathBuf,
pub protocol_version: u32,
}