diff options
author | David Blajda <blajda@hotmail.com> | 2019-05-08 15:38:37 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2019-05-08 15:38:37 +0000 |
commit | 98fb79b85e3cfbb547e5340b30623511daf09ef5 (patch) | |
tree | a03bd7a95c86a92eb7510409429f50433056d7ab /src/sync | |
parent | 0e09c2c06fc0b81f11d12985a4172c815233db17 (diff) |
:WIP: Move types to a different crate
Diffstat (limited to 'src/sync')
-rw-r--r-- | src/sync/barrier.rs | 47 | ||||
-rw-r--r-- | src/sync/mod.rs | 2 | ||||
-rw-r--r-- | src/sync/waiter.rs | 12 |
3 files changed, 0 insertions, 61 deletions
diff --git a/src/sync/barrier.rs b/src/sync/barrier.rs deleted file mode 100644 index c0f21b8..0000000 --- a/src/sync/barrier.rs +++ /dev/null @@ -1,47 +0,0 @@ -use super::waiter::Waiter; -use futures::prelude::*; -use std::sync::{Arc, Mutex}; -use futures::future::{Shared, SharedError}; - -use crate::error::ConditionError; - -#[derive(Clone)] -pub struct Barrier { - inner: Arc<Mutex<BarrierRef>>, -} - -struct BarrierRef { - condition: Option<Shared<Box<Future<Item=(), Error=ConditionError> + Send>>> -} - -impl Barrier { - - pub fn new() -> Barrier { - Barrier { - inner: Arc::new(Mutex::new( - BarrierRef { - condition: None, - })) - } - } - - pub fn condition(&self, waiter: &impl Waiter) - -> Shared<Box<Future<Item=(), Error=ConditionError> + Send>> - { - let mut mut_barrier = self.inner.lock().unwrap(); - let maybe_condition = &mut mut_barrier.condition; - - let f = maybe_condition.get_or_insert_with(|| { - waiter.condition() - }); - - let f = - if let Some(_) = f.peek() { - let condition = waiter.condition(); - maybe_condition.replace(condition); - maybe_condition.as_ref().unwrap() - } else { f }; - f.clone() - } -} - diff --git a/src/sync/mod.rs b/src/sync/mod.rs deleted file mode 100644 index 74e4235..0000000 --- a/src/sync/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod barrier; -pub mod waiter; diff --git a/src/sync/waiter.rs b/src/sync/waiter.rs deleted file mode 100644 index 1005e3d..0000000 --- a/src/sync/waiter.rs +++ /dev/null @@ -1,12 +0,0 @@ -use futures::Future; -use futures::future::{Shared, SharedError}; -use crate::error::ConditionError; - -pub trait Waiter { - type Item: Default; - type Error: From<SharedError<ConditionError>>; - - fn blocked(&self) -> bool; - fn condition(&self) - -> Shared<Box<Future<Item=(), Error=ConditionError> + Send>>; -} |