Select Git revision
formater.rs
Forked from
Per Lindgren / klee_tutorial
Source project has a limited visibility.
formater.rs 3.22 KiB
use super::common::*;
use super::srp_analyser::*;
/*
* Creates a readable representation of the analysis and the given information.
*/
pub fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
let overview = format_overview(tasks, ip, tr);
let mut body = String::new();
for at in analysis {
body = format!("{}\n{}", body, format_analysed_task(at));
}
body = format!("{}\n", body);
for t in tasks {
body = format!("{}\n{}", body, format_task(t));
}
return format!("{}\n{}", overview, body);
}
/*
* Creates the overview section of the readable representation.
*/
pub fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
// Formats the names of all the tasks.
fn format_task_names(tasks: &Tasks) -> String {
let mut task_names = "Tasks:".to_string();
for t in tasks {
task_names = format!("{} {}", task_names, t.id);
}
return task_names;
}
// Formats the Id and priority of tasks.
fn format_id_prio(ip: &IdPrio) -> String {
// let id_prio = format!("Id Priority: {:?}", ip);
let mut id_prio = "Priority:".to_string();
for (key, value) in ip {
id_prio = format!("{} P({}) = {}", id_prio, key, value);
}
return id_prio;
}
// Formats the tasks resources.
fn format_task_res(tr: &TaskResources) -> String {
// let task_res = format!("Task Resources: {:?}", tr);
let mut task_res = "Task Resources:".to_string();
for (key, value) in tr {
let mut values_st = "(".to_string();
for v in value {
values_st = format!("{} {}", values_st, v);
}
task_res = format!("{} {}:{} )", task_res, key, values_st);
}
return task_res;
}
let tot_util = format!("Total Util: {}", total_load_factor(tasks));
let task_names = format_task_names(tasks);
let id_prio = format_id_prio(ip);
let task_res = format_task_res(tr);
return format!("Overview\n\t{}\n\t{}\n\t{}\n\t{}", tot_util, task_names, id_prio, task_res);
}
/*
* Creates a readable representation of a analysed task.
*/
pub fn format_analysed_task(task: &AnalysedTask) -> String {
let header = format!("Analysis of {}", task.task.id);
let res_t = format!("Response Time: {}", task.response_time);
let wcet = format!("wcet: {}", task.wcet);
let block_t = format!("Block Time: {}", task.block_time);
let pre_t = format!("Preemption Time: {}", task.preemption_time);
return format!("{}\n\t{}\n\t{}\n\t{}\n\t{}", header, res_t, wcet, block_t, pre_t);
}
/*
* Creates a readable representation of a task.
*/
pub fn format_task(task: &Task) -> String {
let id = format!("Task {}", task.id);
let prio = format!("Priority: {}", task.prio);
let dl = format!("Deadline: {}", task.deadline);
let inter_a = format!("Inter Arrival: {}", task.inter_arrival);
let trace = format_trace(&task.trace);
return format!("{}\n\t{}\n\t{}\n\t{}\n\t{}", id, prio, dl, inter_a, trace);
}
/*
* Creates a readable representation of a trace.
*/
pub fn format_trace(trace: &Trace) -> String {
return format!("{:?}", trace);
}