aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/util/task.rs
diff options
context:
space:
mode:
authorJack Moffitt <jack@metajack.im>2014-07-21 07:37:24 -0600
committerJack Moffitt <jack@metajack.im>2014-08-02 21:11:47 -0600
commitb91e6f30e063cbcea4ffd750da8385ce448de797 (patch)
tree3e762f7866e29379810ac1e612f7942979e21b87 /src/components/util/task.rs
parent8b6f62c195dd7e42d0b6a18f2ced6fa16bc29faa (diff)
downloadservo-b91e6f30e063cbcea4ffd750da8385ce448de797.tar.gz
servo-b91e6f30e063cbcea4ffd750da8385ce448de797.zip
Upgrade Rust.
Diffstat (limited to 'src/components/util/task.rs')
-rw-r--r--src/components/util/task.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/components/util/task.rs b/src/components/util/task.rs
index b965d555369..4a5addc59c0 100644
--- a/src/components/util/task.rs
+++ b/src/components/util/task.rs
@@ -14,17 +14,21 @@ pub fn spawn_named<S: IntoMaybeOwned<'static>>(name: S, f: proc():Send) {
/// Arrange to send a particular message to a channel if the task built by
/// this `TaskBuilder` fails.
-pub fn send_on_failure<T: Send>(builder: &mut TaskBuilder, msg: T, dest: Sender<T>) {
- let port = builder.future_result();
- let watched_name = builder.opts.name.as_ref().unwrap().as_slice().to_string();
- let name = format!("{:s}Watcher", watched_name);
- spawn_named(name, proc() {
- match port.recv() {
+pub fn spawn_named_with_send_on_failure<T: Send>(name: &str,
+ f: proc(): Send,
+ msg: T,
+ dest: Sender<T>) {
+ let name = name.to_string();
+ let future_result = TaskBuilder::new().named(name.clone()).try_future(f);
+
+ let watch_name = format!("{:s}Watcher", name);
+ spawn_named(watch_name, proc() {
+ match future_result.unwrap() {
Ok(()) => (),
Err(..) => {
- debug!("{:s} failed, notifying constellation", watched_name);
+ debug!("{:s} failed, notifying constellation", name);
dest.send(msg);
}
}
- })
+ });
}