use crate::protocol::Response;
use super::miss_reason;
pub fn extract_outcome(response: &Response) -> Option<(&'static str, i32, Option<&'static str>)> {
match response {
Response::CompileResult {
exit_code, cached, ..
} => {
if *exit_code != 0 {
Some(("error", *exit_code, None))
} else if *cached {
Some(("hit", *exit_code, None))
} else {
Some(("miss", *exit_code, Some(miss_reason::UNKNOWN)))
}
}
Response::LinkResult {
exit_code, cached, ..
} => {
if *exit_code != 0 {
Some(("error", *exit_code, None))
} else if *cached {
Some(("link_hit", *exit_code, None))
} else {
Some(("link_miss", *exit_code, Some(miss_reason::UNKNOWN)))
}
}
Response::Error { .. } => Some(("error", -1, None)),
_ => None,
}
}