aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src/run_result.rs
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/run_result.rs')
-rw-r--r--backend/src/run_result.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/backend/src/run_result.rs b/backend/src/run_result.rs
index 697b8fa..2deb2e0 100644
--- a/backend/src/run_result.rs
+++ b/backend/src/run_result.rs
@@ -13,6 +13,7 @@ use std::process::Output;
struct RunResultMetadata {
pub exit: i32,
pub result: i32,
+ pub elapsed: u64,
pub message: String,
pub truncated: bool,
}
@@ -28,6 +29,7 @@ pub fn open_render(snip: &Snippet, comp: &Compiler) -> Json {
let meta: RunResultMetadata = json::decode(&encoded).unwrap();
map.insert("exit".to_string(), meta.exit.to_json());
map.insert("result".to_string(), meta.result.to_json());
+ map.insert("elapsed".to_string(), meta.elapsed.to_json());
map.insert("message".to_string(), meta.message.to_json());
map.insert("truncated".to_string(), meta.truncated.to_json());
map.insert("output".to_string(), read_output_str(&snip, &comp).to_json());
@@ -80,17 +82,18 @@ pub fn parse_and_save(snip: &Snippet, comp: &Compiler, output: Output) -> Result
let output_limit = 65536;
if output.status.success() {
- if output.stderr.len() < 8 {
+ if output.stderr.len() < 16 {
return Err(PoeError::from("failed sandbox (result)"));
}
- let (metavec, msgvec) = output.stderr.split_at(8);
+ let (metavec, msgvec) = output.stderr.split_at(16);
let mut rdr = Cursor::new(metavec);
let reason = rdr.read_i32::<LittleEndian>().unwrap();
let exit = rdr.read_i32::<LittleEndian>().unwrap();
+ let elapsed = rdr.read_u64::<LittleEndian>().unwrap();
let msg_str = String::from_utf8_lossy(&msgvec);
let trunc = output.stdout.len() > output_limit;
- let meta = RunResultMetadata { exit: exit, result: reason, message: msg_str.into_owned(), truncated: trunc };
+ let meta = RunResultMetadata { exit: exit, result: reason, message: msg_str.into_owned(), truncated: trunc, elapsed: elapsed };
let mut meta_file = fs::File::create(format!("{}/results/{}.json", &snip.basedir(), &comp.id))?;
meta_file.write(json::encode(&meta).unwrap().as_bytes())?;