use serde::Deserialize;
use std::collections::HashMap;
#[derive(Clone, Debug, Deserialize)]
pub struct PidsStats {
pub current: Option<u64>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct ThrottlingDataStats {
pub periods: Option<u64>,
pub throttled_periods: Option<u64>,
pub throttled_time: Option<u64>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct CpuUsageStats {
pub total_usage: Option<u64>,
pub percpu_usage: Option<Vec<u64>>,
pub usage_in_kernelmode: Option<u64>,
pub usage_in_usermode: Option<u64>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct CpuStats {
pub cpu_usage: Option<CpuUsageStats>,
pub system_cpu_usage: Option<u64>,
pub online_cpus: Option<u64>,
pub throttling_data: Option<ThrottlingDataStats>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct BlkioStatEntry {
pub major: Option<u64>,
pub minor: Option<u64>,
pub op: Option<String>,
pub value: Option<u64>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct BlkioStats {
pub io_service_bytes_recursive: Option<Vec<BlkioStatEntry>>,
pub io_serviced_recursive: Option<Vec<BlkioStatEntry>>,
pub io_queue_recursive: Option<Vec<BlkioStatEntry>>,
pub io_service_time_recursive: Option<Vec<BlkioStatEntry>>,
pub io_wait_time_recursive: Option<Vec<BlkioStatEntry>>,
pub io_merged_recursive: Option<Vec<BlkioStatEntry>>,
pub io_time_recursive: Option<Vec<BlkioStatEntry>>,
pub sectors_recursive: Option<Vec<BlkioStatEntry>>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct DetailedMemoryStats {
pub active_anon: Option<u64>,
pub active_file: Option<u64>,
pub cache: Option<u64>,
pub dirty: Option<u64>,
pub hierarchical_memory_limit: Option<u64>,
pub hierarchical_memsw_limit: Option<u64>,
pub inactive_anon: Option<u64>,
pub inactive_file: Option<u64>,
pub mapped_file: Option<u64>,
pub pgfault: Option<u64>,
pub pgmajfault: Option<u64>,
pub pgpgin: Option<u64>,
pub pgpgout: Option<u64>,
pub rss: Option<u64>,
pub rss_huge: Option<u64>,
pub swap: Option<u64>,
pub total_active_anon: Option<u64>,
pub total_active_file: Option<u64>,
pub total_cache: Option<u64>,
pub total_dirty: Option<u64>,
pub total_inactive_anon: Option<u64>,
pub total_inactive_file: Option<u64>,
pub total_mapped_file: Option<u64>,
pub total_pgfault: Option<u64>,
pub total_pgmajfault: Option<u64>,
pub total_pgpgin: Option<u64>,
pub total_pgpgout: Option<u64>,
pub total_rss: Option<u64>,
pub total_rss_huge: Option<u64>,
pub total_swap: Option<u64>,
pub total_unevictable: Option<u64>,
pub total_writeback: Option<u64>,
pub unevictable: Option<u64>,
pub writeback: Option<u64>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct MemoryStats {
pub usage: Option<u64>,
pub max_usage: Option<u64>,
pub failcnt: Option<u64>,
pub limit: Option<u64>,
pub stats: Option<DetailedMemoryStats>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct NetworkStats {
pub rx_bytes: Option<u64>,
pub rx_packets: Option<u64>,
pub rx_errors: Option<u64>,
pub rx_dropped: Option<u64>,
pub tx_bytes: Option<u64>,
pub tx_packets: Option<u64>,
pub tx_errors: Option<u64>,
pub tx_dropped: Option<u64>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct Stats {
pub read: Option<String>,
pub preread: Option<String>,
pub networks: Option<HashMap<String, NetworkStats>>,
pub memory_stats: Option<MemoryStats>,
pub blkio_stats: Option<BlkioStats>,
pub cpu_stats: Option<CpuStats>,
pub num_procs: Option<u64>,
pub precpu_stats: Option<CpuStats>,
pub pids_stats: Option<PidsStats>,
}