in src/enclave_proc/cpu_info.rs [147:173]
fn parse_cpu_pool_line(line_str: &str) -> NitroCliResult<Vec<u32>> {
let mut result: Vec<u32> = Vec::new();
// The CPU pool format is: "id1-id2,id3-id4,..."
for interval in line_str.split(',') {
let bounds: Vec<&str> = interval.split('-').collect();
match bounds.len() {
1 => result.push(CpuInfo::get_value(bounds[0])?),
2 => {
let start_id = CpuInfo::get_value(bounds[0])?;
let end_id = CpuInfo::get_value(bounds[1])?;
for cpu_id in start_id..=end_id {
result.push(cpu_id);
}
}
_ => {
return Err(new_nitro_cli_failure!(
&format!("Invalid CPU ID interval ({})", interval),
NitroCliErrorEnum::CpuError
))
}
}
}
Ok(result)
}