diff options
author | Jack Moffitt <jack@metajack.im> | 2014-07-21 07:37:24 -0600 |
---|---|---|
committer | Jack Moffitt <jack@metajack.im> | 2014-08-02 21:11:47 -0600 |
commit | b91e6f30e063cbcea4ffd750da8385ce448de797 (patch) | |
tree | 3e762f7866e29379810ac1e612f7942979e21b87 /src/components/util/task.rs | |
parent | 8b6f62c195dd7e42d0b6a18f2ced6fa16bc29faa (diff) | |
download | servo-b91e6f30e063cbcea4ffd750da8385ce448de797.tar.gz servo-b91e6f30e063cbcea4ffd750da8385ce448de797.zip |
Upgrade Rust.
Diffstat (limited to 'src/components/util/task.rs')
-rw-r--r-- | src/components/util/task.rs | 20 |
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); } } - }) + }); } |