summaryrefslogtreecommitdiffstats
path: root/core/src/runtime.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-19 10:17:08 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-19 10:17:44 +0100
commitb5b17ed4d800c03beb3ad535d1069a7784e8dc1d (patch)
treeb9e6477bd11bd6784f8ee61e818b5f5ff1a44318 /core/src/runtime.rs
parentd50ff9b5d97d9c3d6c6c70a9b4efe764b6126c86 (diff)
downloadiced-b5b17ed4d800c03beb3ad535d1069a7784e8dc1d.tar.gz
iced-b5b17ed4d800c03beb3ad535d1069a7784e8dc1d.tar.bz2
iced-b5b17ed4d800c03beb3ad535d1069a7784e8dc1d.zip
Create `iced_futures` and wire everything up
Diffstat (limited to 'core/src/runtime.rs')
-rw-r--r--core/src/runtime.rs74
1 files changed, 0 insertions, 74 deletions
diff --git a/core/src/runtime.rs b/core/src/runtime.rs
deleted file mode 100644
index 31234d11..00000000
--- a/core/src/runtime.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-mod executor;
-
-pub use executor::Executor;
-
-use crate::{subscription, Command, Subscription};
-
-use futures::Sink;
-use std::marker::PhantomData;
-
-#[derive(Debug)]
-pub struct Runtime<Hasher, Event, Executor, Receiver, Message> {
- executor: Executor,
- subscriptions: subscription::Tracker<Hasher, Event>,
- receiver: Receiver,
- _message: PhantomData<Message>,
-}
-
-impl<Hasher, Event, Executor, Receiver, Message>
- Runtime<Hasher, Event, Executor, Receiver, Message>
-where
- Hasher: std::hash::Hasher + Default,
- Event: Send + Clone + 'static,
- Executor: self::Executor,
- Receiver: Sink<Message, Error = core::convert::Infallible>
- + Unpin
- + Send
- + Clone
- + 'static,
- Message: Send + 'static,
-{
- pub fn new(receiver: Receiver) -> Self {
- Self {
- executor: Executor::new(),
- subscriptions: subscription::Tracker::new(),
- receiver,
- _message: PhantomData,
- }
- }
-
- pub fn spawn(&mut self, command: Command<Message>) {
- use futures::{FutureExt, SinkExt};
-
- let futures = command.futures();
-
- for future in futures {
- let mut receiver = self.receiver.clone();
-
- self.executor.spawn(future.then(|message| {
- async move {
- let _ = receiver.send(message).await;
-
- ()
- }
- }));
- }
- }
-
- pub fn track(
- &mut self,
- subscription: Subscription<Hasher, Event, Message>,
- ) {
- let futures = self
- .subscriptions
- .update(subscription, self.receiver.clone());
-
- for future in futures {
- self.executor.spawn(future);
- }
- }
-
- pub fn broadcast(&mut self, event: Event) {
- self.subscriptions.broadcast(event);
- }
-}