use serde::{Deserialize, Serialize};
use std::fmt;
pub use ttcore_def::*;
pub const OPS_ID_LEN: usize = 4;
pub const DEFAULT_REQ_ID: u64 = std::u64::MAX;
pub type UUID = u64;
pub type ServerAddr = String;
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct Req<T: Serialize> {
pub uuid: u64,
pub cli_id: Option<CliId>,
pub msg: T,
}
impl<T: Serialize> Req<T> {
pub fn new(uuid: u64, msg: T) -> Self {
Self::newx(uuid, None, msg)
}
pub fn newx(uuid: u64, cli_id: Option<CliId>, msg: T) -> Self {
Req { uuid, cli_id, msg }
}
}
#[allow(missing_docs)]
#[derive(
Clone, Copy, Debug, Deserialize, Serialize, Eq, PartialEq, Ord, PartialOrd,
)]
pub enum RetStatus {
Fail,
Success,
}
impl fmt::Display for RetStatus {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let msg = match self {
RetStatus::Fail => "Fail",
RetStatus::Success => "Success",
};
write!(f, "{}", msg)
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Resp {
pub uuid: u64,
pub status: RetStatus,
pub msg: Vec<u8>,
}
impl fmt::Display for Resp {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"status: {}, msg: {}",
self.status,
String::from_utf8_lossy(&self.msg)
)
}
}
#[allow(missing_docs)]
#[derive(
Clone,
Debug,
Default,
Deserialize,
Serialize,
Eq,
PartialEq,
Ord,
PartialOrd,
)]
pub struct RespGetServerInfo {
pub vm_total: u32,
pub cpu_total: u32,
pub cpu_used: u32,
pub mem_total: u32,
pub mem_used: u32,
pub disk_total: u32,
pub disk_used: u32,
pub supported_list: Vec<String>,
}
pub type RespGetEnvList = Vec<EnvMeta>;
#[allow(missing_docs)]
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct ReqGetEnvInfo {
pub env_set: Vec<EnvId>,
}
pub type RespGetEnvInfo = Vec<EnvInfo>;
#[allow(missing_docs)]
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ReqAddEnv {
pub env_id: EnvId,
pub os_prefix: Vec<String>,
pub life_time: Option<u64>,
pub cpu_num: Option<u32>,
pub mem_size: Option<u32>,
pub disk_size: Option<u32>,
pub port_set: Vec<Port>,
pub dup_each: Option<u32>,
pub deny_outgoing: bool,
}
#[allow(missing_docs)]
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ReqStopEnv {
pub env_id: EnvId,
}
pub type ReqStartEnv = ReqStopEnv;
#[allow(missing_docs)]
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct ReqUpdateEnvLife {
pub env_id: EnvId,
pub life_time: u64,
pub is_fucker: bool,
}
#[allow(missing_docs)]
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct ReqUpdateEnvResource {
pub env_id: EnvId,
pub cpu_num: Option<u32>,
pub mem_size: Option<u32>,
pub disk_size: Option<u32>,
pub vm_port: Vec<u16>,
pub deny_outgoing: Option<bool>,
}
#[allow(missing_docs)]
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct ReqDelEnv {
pub env_id: EnvId,
}
#[allow(missing_docs)]
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct ReqUpdateEnvKickVm {
pub env_id: EnvId,
pub vm_id: Vec<VmId>,
pub os_prefix: Vec<String>,
}