Skip to content
Snippets Groups Projects
Commit 1ff58465 authored by Blinningjr's avatar Blinningjr
Browse files

Implemeted nicer printout for stdout

parent dfbfd7ef
No related branches found
No related tags found
No related merge requests found
......@@ -31,7 +31,7 @@ struct Opt {
fn main() {
let opt = Opt::from_args();
println!("{:?}", opt);
//println!("{:?}", opt);
let tasks: Tasks = match opt.input {
Some(file) => load_tasks(file),
......@@ -44,22 +44,94 @@ fn main() {
match opt.output {
Some(file) => {
write_to_file(serde_json::to_string(&analysis).unwrap(), file);
}, // TODO: Implement so that the analysis can be saved to html.
}, // TODO: Implement so that the analysis can be saved to txt.
None => {
println!("tasks {:?}", &tasks);
println!("tot_util {}", total_load_factor(&tasks));
println!("{}", format_analysis(&analysis, &tasks, &ip, &tr));
},
};
}
println!("ip: {:?}", ip);
println!("tr: {:?}", tr);
println!("Analysis {:#?}", analysis);
fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
let overview = format_overview(tasks, ip, tr);
// TODO: Implement a nicer print out to stdout.
},
};
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);
}
fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
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;
}
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;
}
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);
}
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!("Preemtion Time: {}", task.preemtion_time);
return format!("{}\n\t{}\n\t{}\n\t{}\n\t{}", header, res_t, wcet, block_t, pre_t);
}
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);
}
fn format_trace(trace: &Trace) -> String {
return format!("{:?}", trace);
}
fn write_to_file(contents: String, file: PathBuf) -> std::io::Result<()> {
let mut file = File::create(file)?;
file.write_all(contents.as_bytes())?;
......@@ -79,8 +151,7 @@ fn read_from_file(contents: &mut String, filename: PathBuf) -> std::io::Result<(
}
fn create_tasks() -> Tasks {
let t1 = Task {
fn create_tasks() -> Tasks { let t1 = Task {
id: "T1".to_string(),
prio: 1,
deadline: 100,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment