diff options
author | Nick Fitzgerald <fitzgen@gmail.com> | 2017-03-31 14:37:38 -0700 |
---|---|---|
committer | Nick Fitzgerald <fitzgen@gmail.com> | 2017-03-31 14:47:29 -0700 |
commit | 9ef436cf8e83ab42937c5fa3d98af0414a7dd12a (patch) | |
tree | 801a6f81f579052f995d42c4016b92cf3efe9431 /components/profile/trace_dump.rs | |
parent | f003fdf106539b3a08b18b9106b511e830b8cd07 (diff) | |
download | servo-9ef436cf8e83ab42937c5fa3d98af0414a7dd12a.tar.gz servo-9ef436cf8e83ab42937c5fa3d98af0414a7dd12a.zip |
Move trace file opening into TraceDump::new
Moves the responsibility of opening the trace file into TraceDump::new, so that
it doesn't need to be repeated at every call site.
Diffstat (limited to 'components/profile/trace_dump.rs')
-rw-r--r-- | components/profile/trace_dump.rs | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/components/profile/trace_dump.rs b/components/profile/trace_dump.rs index 5576f1af94c..b0c8f9d7ef5 100644 --- a/components/profile/trace_dump.rs +++ b/components/profile/trace_dump.rs @@ -7,7 +7,8 @@ use profile_traits::time::{ProfilerCategory, TimerMetadata}; use serde_json; use std::fs; -use std::io::Write; +use std::io::{self, Write}; +use std::path; /// An RAII class for writing the HTML trace dump. #[derive(Debug)] @@ -36,9 +37,12 @@ struct TraceEntry { impl TraceDump { /// Create a new TraceDump and write the prologue of the HTML file out to /// disk. - pub fn new(mut file: fs::File) -> TraceDump { - write_prologue(&mut file); - TraceDump { file: file } + pub fn new<P>(trace_file_path: P) -> io::Result<TraceDump> + where P: AsRef<path::Path> + { + let mut file = fs::File::create(trace_file_path)?; + write_prologue(&mut file)?; + Ok(TraceDump { file: file }) } /// Write one trace to the trace dump file. @@ -63,18 +67,18 @@ impl Drop for TraceDump { /// Write the epilogue of the trace dump HTML file out to disk on /// destruction. fn drop(&mut self) { - write_epilogue(&mut self.file); + write_epilogue(&mut self.file).unwrap(); } } -fn write_prologue(file: &mut fs::File) { - writeln!(file, "{}", include_str!("./trace-dump-prologue-1.html")).unwrap(); - writeln!(file, "{}", include_str!("./trace-dump.css")).unwrap(); - writeln!(file, "{}", include_str!("./trace-dump-prologue-2.html")).unwrap(); +fn write_prologue(file: &mut fs::File) -> io::Result<()> { + writeln!(file, "{}", include_str!("./trace-dump-prologue-1.html"))?; + writeln!(file, "{}", include_str!("./trace-dump.css"))?; + writeln!(file, "{}", include_str!("./trace-dump-prologue-2.html")) } -fn write_epilogue(file: &mut fs::File) { - writeln!(file, "{}", include_str!("./trace-dump-epilogue-1.html")).unwrap(); - writeln!(file, "{}", include_str!("./trace-dump.js")).unwrap(); - writeln!(file, "{}", include_str!("./trace-dump-epilogue-2.html")).unwrap(); +fn write_epilogue(file: &mut fs::File) -> io::Result<()> { + writeln!(file, "{}", include_str!("./trace-dump-epilogue-1.html"))?; + writeln!(file, "{}", include_str!("./trace-dump.js"))?; + writeln!(file, "{}", include_str!("./trace-dump-epilogue-2.html")) } |