fn parse_stat()

in core/server/src/streaming/systems/snapshot/procdump.rs [22:94]


fn parse_stat(contents: &str) -> String {
    let fields: Vec<&str> = contents.split_whitespace().collect();
    if fields.len() < 52 {
        return format!("Invalid stat format: {}", contents);
    }

    let cmd_start = contents.find('(').unwrap_or(0);
    let cmd_end = contents.rfind(')').unwrap_or(contents.len());
    let comm = &contents[cmd_start + 1..cmd_end];

    let mut result = String::new();
    result.push_str(&format!("PID: {}\n", fields[0]));
    result.push_str(&format!("Command: {}\n", comm));
    result.push_str(&format!(
        "State: {} ({})\n",
        fields[2],
        match fields[2] {
            "R" => "Running",
            "S" => "Sleeping (interruptible)",
            "D" => "Waiting in uninterruptible disk sleep",
            "Z" => "Zombie",
            "T" => "Stopped",
            "t" => "Tracing stop",
            "W" => "Paging",
            "X" | "x" => "Dead",
            "K" => "Wakekill",
            "P" => "Parked",
            _ => "Unknown",
        }
    ));
    result.push_str(&format!("Parent PID: {}\n", fields[3]));
    result.push_str(&format!("Process Group: {}\n", fields[4]));
    result.push_str(&format!("Session ID: {}\n", fields[5]));
    result.push_str(&format!("TTY: {}\n", fields[6]));
    result.push_str(&format!("Foreground Process Group: {}\n", fields[7]));
    result.push_str(&format!("Kernel Flags: {}\n", fields[8]));
    result.push_str(&format!("Minor Faults: {}\n", fields[9]));
    result.push_str(&format!("Children Minor Faults: {}\n", fields[10]));
    result.push_str(&format!("Major Faults: {}\n", fields[11]));
    result.push_str(&format!("Children Major Faults: {}\n", fields[12]));
    result.push_str(&format!("User Mode Time: {} ticks\n", fields[13]));
    result.push_str(&format!("System Mode Time: {} ticks\n", fields[14]));
    result.push_str(&format!("Children User Mode Time: {} ticks\n", fields[15]));
    result.push_str(&format!(
        "Children System Mode Time: {} ticks\n",
        fields[16]
    ));
    result.push_str(&format!("Priority: {}\n", fields[17]));
    result.push_str(&format!("Nice Value: {}\n", fields[18]));
    result.push_str(&format!("Number of Threads: {}\n", fields[19]));
    result.push_str(&format!("Real-time Priority: {}\n", fields[39]));
    result.push_str(&format!(
        "Policy: {} ({})\n",
        fields[40],
        match fields[40] {
            "0" => "SCHED_NORMAL/OTHER",
            "1" => "SCHED_FIFO",
            "2" => "SCHED_RR",
            "3" => "SCHED_BATCH",
            "5" => "SCHED_IDLE",
            "6" => "SCHED_DEADLINE",
            _ => "Unknown",
        }
    ));
    result.push_str(&format!(
        "Aggregated Block I/O Delays: {} ticks\n",
        fields[41]
    ));
    result.push_str(&format!("Guest Time: {} ticks\n", fields[42]));
    result.push_str(&format!("Children Guest Time: {} ticks\n", fields[43]));

    result
}