#![deny(missing_docs)]
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub struct RequestWrapper {
pub id: u64,
pub request: Request,
}
#[derive(Debug, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[serde(tag = "type")]
pub enum Request {
SaveDna {
id: String,
#[serde(with = "serde_bytes")]
content: Vec<u8>,
},
DownloadDna {
url: String,
},
ConfigurePlayer {
id: String,
partial_config: String,
},
Startup {
id: String,
log_level: Option<String>,
},
Shutdown {
id: String,
signal: Option<String>,
},
Reset,
CallAdminInterface {
id: String,
#[serde(with = "serde_bytes")]
message: Vec<u8>,
},
ConnectAppInterface {
token: Vec<u8>,
port: u16,
},
DisconnectAppInterface {
port: u16,
},
CallAppInterface {
port: u16,
#[serde(with = "serde_bytes")]
message: Vec<u8>,
},
DownloadLogs {
id: String,
},
}
#[derive(Debug, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[serde(untagged)]
pub enum MessageResponse {
Null,
Bytes(Vec<u8>),
}
impl MessageResponse {
pub fn into_bytes(self) -> Vec<u8> {
match self {
Self::Null => Vec::new(),
Self::Bytes(v) => v,
}
}
}
#[derive(Debug, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[serde(tag = "type")]
pub enum MessageToClient {
Signal {
port: u16,
data: Vec<u8>,
},
Response {
id: u64,
response: std::result::Result<MessageResponse, String>,
},
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case", tag = "type", content = "data")]
pub enum TryCpServerResponse {
DownloadLogs(DownloadLogsResponse),
}
#[derive(Debug, serde::Serialize, serde::Deserialize)]
pub struct DownloadLogsResponse {
pub conductor_stdout: Vec<u8>,
pub conductor_stderr: Vec<u8>,
}