parent
5a2c30520f
commit
85a2d880df
@ -0,0 +1,45 @@
|
||||
//! The actual running task
|
||||
use super::*;
|
||||
use futures::prelude::*;
|
||||
|
||||
pub type SupervisorError = (); //TODO
|
||||
pub type Error = (); // TODO
|
||||
|
||||
pub fn spawn_supervisor() -> JoinHandle<Result<(), SupervisorError>>
|
||||
{
|
||||
tokio::spawn(async move {
|
||||
//TODO: Spawn slave and handle its exiting, restarting, etc according to config
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
|
||||
fn spawn_slave(rx: mpsc::Receiver<()>) -> JoinHandle<Result<(), Error>>
|
||||
{
|
||||
tokio::spawn(async move {
|
||||
|
||||
let mut rx = rx
|
||||
.chunk(10) // TODO: from config
|
||||
.lag(duration!(10 ms)); // TODO: from config
|
||||
let mut timeout = tokio::time::interval(duration!(200 ms)); // TODO: from config
|
||||
loop {
|
||||
tokio::select! {
|
||||
block = rx.next() => {
|
||||
match block {
|
||||
Some(block) => {
|
||||
// TODO: Process this block
|
||||
},
|
||||
None => {
|
||||
// Reached the end of stream, exit gracefully.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
_ = timeout.tick() => {
|
||||
// Cause the `rx` to release a non-full chunk.
|
||||
rx.get_mut().push_now();
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
}
|
Loading…
Reference in new issue