From d0fe576d622ac48d18f60e40d7febe54ae85dbf3 Mon Sep 17 00:00:00 2001 From: Gregor Reitzenstein Date: Mon, 7 Dec 2020 12:11:07 +0100 Subject: [PATCH] Status --- src/initiator.rs | 14 +++++++++++--- src/main.rs | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/initiator.rs b/src/initiator.rs index 7544529..56c7da2 100644 --- a/src/initiator.rs +++ b/src/initiator.rs @@ -8,7 +8,7 @@ use futures::future::BoxFuture; use genawaiter::{sync::{Gen, GenBoxed, Co}, GeneratorState}; -use futures_signals::signal::{Signal, MutableSignalCloned}; +use futures_signals::signal::{Signal, Mutable, MutableSignalCloned}; use crate::machine::{Machine, ReturnToken}; use crate::db::machine::MachineState; use crate::db::user::{User, UserId, UserData}; @@ -35,6 +35,13 @@ impl Initiator { sensor: sensor, } } + + pub fn wrap(sensor: Box) -> (Mutable>, Self) { + let m = Mutable::new(None); + let s = m.signal_cloned(); + + (m, Self::new(sensor, s)) + } } impl Future for Initiator { @@ -68,8 +75,9 @@ impl Future for Initiator { } } -pub fn load() -> Result> { - unimplemented!() +pub fn load() -> Result<(Mutable>, Initiator)> { + let d = Box::new(Dummy::new()); + Ok(Initiator::wrap(d)) } pub struct Dummy { diff --git a/src/main.rs b/src/main.rs index a5d6bad..ef1a120 100644 --- a/src/main.rs +++ b/src/main.rs @@ -135,12 +135,13 @@ fn maybe(matches: clap::ArgMatches, log: Arc) -> Result<(), Error> { } else { //let machines = machine::load(&config)?; - //let initiators = initiator::load(&config)?; let ex = Executor::new(); let m = futures_signals::signal::Mutable::new(crate::db::machine::MachineState::new()); let (mut tx, actor) = actor::load()?; + let (mut init_machine, initiator) = initiator::load()?; + // TODO HERE: restore connections between initiators, machines, actors // Like so @@ -150,6 +151,7 @@ fn maybe(matches: clap::ArgMatches, log: Arc) -> Result<(), Error> { // Like so let t = ex.spawn(actor); + let t2 = ex.spawn(initiator); let (signal, shutdown) = async_channel::bounded::<()>(1); easy_parallel::Parallel::new()