use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
pub struct PeerAgent {
pub name: String,
pub device: String,
pub ib_port: u32,
pub link_type: String,
pub address: String, }
#[derive(Debug, Deserialize)]
pub struct QueryBody {
#[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Deserialize)]
pub struct StartPeerAgentBody {
#[serde(default)]
pub alias: Option<String>, pub device: String,
pub ib_port: u32,
pub link_type: String,
pub address: String, #[serde(default = "default_name_prefix")]
pub name_prefix: String, #[serde(default)]
pub scope: Option<String>, }
fn default_name_prefix() -> String {
"agent".to_string()
}
#[derive(Debug, Deserialize, Serialize)]
pub struct DesiredTopologySpec {
pub target_peers: Vec<String>,
#[serde(default)]
pub min_bw: Option<String>, #[serde(default)]
pub symmetric: bool,
#[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MrInfo {
pub addr: u64,
pub length: usize,
pub rkey: u32,
pub lkey: u32,
}
#[derive(Debug, Deserialize)]
pub struct RegisterMrBody {
pub agent_name: String,
pub mr_name: String,
pub addr: u64,
pub length: usize,
pub rkey: u32,
#[serde(default)]
pub lkey: u32, #[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Deserialize)]
pub struct GetMrInfoBody {
#[allow(dead_code)] pub src: String, pub dst: String, pub mr_name: String,
#[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Serialize)]
pub struct RegisterMrResponse {
pub status: String,
}
#[derive(Debug, Serialize)]
pub struct StartPeerAgentResponse {
pub status: String,
pub name: String, pub redis_address: String, }
#[derive(Debug, Clone, Serialize)]
pub struct GetMrInfoResponse {
pub mr_info: Option<MrInfo>,
}
#[derive(Debug, Deserialize)]
pub struct CleanupBody {
pub agent_name: String,
#[serde(default)]
pub scope: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct CleanupResponse {
pub status: String,
pub message: String,
}
#[derive(Debug, Deserialize)]
pub struct GetRedisAddressBody {
}
#[derive(Debug, Serialize)]
pub struct GetRedisAddressResponse {
pub status: String,
pub redis_address: String, }
#[derive(Debug, Deserialize)]
pub struct RegisterEngineBody {
pub engine_id: String,
pub role: String, pub world_size: u32,
pub num_blocks: u32,
pub host: String,
pub port: u32,
pub peer_addrs: Vec<String>, #[serde(default)]
pub p2p_host: Option<String>, #[serde(default)]
pub p2p_port: Option<u32>, #[serde(default)]
pub scope: Option<String>, #[serde(default)]
pub max_num_seqs: Option<u32>, #[serde(default)]
pub model_path: Option<String>, }
#[derive(Debug, Serialize)]
pub struct RegisterEngineResponse {
pub status: String,
pub message: String,
}
#[derive(Debug, Deserialize)]
pub struct GetEngineInfoBody {
pub engine_id: String,
#[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Serialize)]
pub struct GetEngineInfoResponse {
pub status: String,
pub engine_info: Option<serde_json::Value>, }
#[derive(Debug, Deserialize)]
pub struct UnregisterEngineBody {
pub engine_id: String,
#[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Serialize)]
pub struct UnregisterEngineResponse {
pub status: String,
pub message: String,
}
#[derive(Debug, Deserialize)]
pub struct ListEnginesBody {
#[serde(default)]
pub scope: Option<String>, }
#[derive(Debug, Serialize)]
pub struct ListEnginesResponse {
pub status: String,
pub engines: Vec<serde_json::Value>, }
#[derive(Debug, Deserialize)]
pub struct HeartbeatBody {
pub entity_type: String,
pub entity_id: String,
#[serde(default)]
pub scope: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct HeartbeatResponse {
pub status: String,
pub message: String,
}