aboutsummaryrefslogtreecommitdiffstats
path: root/components/profile/trace_dump.rs
diff options
context:
space:
mode:
authorNick Fitzgerald <fitzgen@gmail.com>2017-03-31 14:37:38 -0700
committerNick Fitzgerald <fitzgen@gmail.com>2017-03-31 14:47:29 -0700
commit9ef436cf8e83ab42937c5fa3d98af0414a7dd12a (patch)
tree801a6f81f579052f995d42c4016b92cf3efe9431 /components/profile/trace_dump.rs
parentf003fdf106539b3a08b18b9106b511e830b8cd07 (diff)
downloadservo-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.rs30
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"))
}