diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2017-09-17 16:41:54 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2017-09-18 02:47:04 +0200 |
commit | 46628fba05a548c1c2141d7c709b6e5d812f3114 (patch) | |
tree | d4259a3a2b0255227111c1ad1e28aeec37c43a45 /components/script/script_thread.rs | |
parent | 8e78f18d2d282e651c5a8a20b2fe28cb015b264a (diff) | |
download | servo-46628fba05a548c1c2141d7c709b6e5d812f3114.tar.gz servo-46628fba05a548c1c2141d7c709b6e5d812f3114.zip |
Move Task to its own module
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r-- | components/script/script_thread.rs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 21989316864..56f47cfdbef 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -105,15 +105,12 @@ use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl}; use std::cell::Cell; use std::collections::{hash_map, HashMap, HashSet}; use std::default::Default; -use std::fmt; -use std::intrinsics; use std::ops::Deref; use std::option::Option; use std::ptr; use std::rc::Rc; use std::result::Result; use std::sync::Arc; -use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{Receiver, Select, Sender, channel}; use std::thread; use style::context::ReflowGoal; @@ -206,62 +203,6 @@ impl InProgressLoad { } } -/// Encapsulated state required to create cancellable tasks from non-script threads. -pub struct TaskCanceller { - pub cancelled: Option<Arc<AtomicBool>>, -} - -impl TaskCanceller { - pub fn wrap_task<T>(&self, task: Box<T>) -> Box<Task + Send> - where - T: Send + Task + 'static, - { - box CancellableTask { - cancelled: self.cancelled.clone(), - inner: task, - } - } -} - -/// A task that can be discarded by toggling a shared flag. -pub struct CancellableTask<T: Send + Task> { - cancelled: Option<Arc<AtomicBool>>, - inner: Box<T>, -} - -impl<T> CancellableTask<T> -where - T: Send + Task, -{ - fn is_cancelled(&self) -> bool { - self.cancelled.as_ref().map_or(false, |cancelled| { - cancelled.load(Ordering::SeqCst) - }) - } -} - -impl<T> Task for CancellableTask<T> -where - T: Send + Task, -{ - fn run(self: Box<Self>) { - if !self.is_cancelled() { - self.inner.run() - } - } -} - -pub trait Task { - fn name(&self) -> &'static str { unsafe { intrinsics::type_name::<Self>() } } - fn run(self: Box<Self>); -} - -impl fmt::Debug for Task + Send { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - fmt.debug_tuple(self.name()).field(&format_args!("...")).finish() - } -} - #[derive(Debug)] enum MixedMessage { FromConstellation(ConstellationControlMsg), |