use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Ready {
pub boot_time_ns: u64,
pub init_time_ns: u64,
pub ready_time_ns: u64,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub agent_version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClockSync {
pub unix_time_nanos: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CoreError {
pub kind: CoreErrorKind,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offending_type: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum CoreErrorKind {
MalformedMessage,
UnsupportedMessageType,
UnsupportedProtocolGeneration,
InvalidFlags,
InvalidPayload,
InvalidSession,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InitResolved {
pub default_user: ResolvedUser,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
pub struct ResolvedUser {
pub uid: u32,
pub gid: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InitAck {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RelayClientDisconnected {
pub id_start: u32,
pub id_end_exclusive: u32,
}