Fix inbound handle reading

This commit is contained in:
Austen Adler 2022-07-07 01:25:15 -04:00
parent 91dd7839fe
commit c4c927cc9d
2 changed files with 17 additions and 6 deletions

View File

@ -33,7 +33,7 @@ async fn main() -> AppResult<()> {
info!("Starting ir remote");
let (outbound_serial_tx, outbound_serial_rx) = channel(100);
let (inbound_serial_tx, inbound_serial_rx) = channel(100);
let (inbound_serial_tx, mut inbound_serial_rx) = channel(100);
let agent_handle: Option<JoinHandle<AppResult<()>>> = if options.no_serial {
warn!("Not starting serial port agent (--no-serial was given)");
@ -48,6 +48,15 @@ async fn main() -> AppResult<()> {
};
// TODO: Consume inbound_serial_rx, otherwise it will fill up and eventually be dropped
let inbound_serial_handle = (!options.no_serial).then(|| {
tokio::task::spawn(async move {
while let Some(m) = inbound_serial_rx.recv().await {
info!("Got message from inbound channel: {m}");
}
error!("Inbound serial receiver errored");
})
});
// let (agent_shutdown_tx, agent_handle): (Sender<()>, JoinHandle<AppResult<()>>) = {
@ -68,10 +77,13 @@ async fn main() -> AppResult<()> {
.await?;
tokio::select!(
// TODO: Handle the case where agent_handle is enabled or disabled
// r = agent_handle.unwrap(), if agent_handle.is_some() => {
// error!("Agent handle ended: {r:?}");
// }
// TODO: Find a better way to do this. Unwrap is called before if statement, so unwrap_or_else must be used
r = agent_handle.unwrap_or_else(|| tokio::task::spawn(async move {Ok(())})), if agent_handle.is_some() => {
error!("Agent handle ended: {r:?}");
}
r = inbound_serial_handle.unwrap_or_else(|| tokio::task::spawn(async move {()})), if inbound_serial_handle.is_some() => {
error!("Inbound serial handle ended: {r:?}");
}
r = webui_handle => {
// agent_shutdown_tx.send(()).await?;
error!("Webserver handle ended: {r:?}");

View File

@ -58,7 +58,6 @@ fn inbound(port: Box<dyn SerialPort>, inbound_serial_tx: Sender<String>) -> AppR
return Err(e.into());
}
Ok(m) => {
info!("Got message from inbound channel: {m}");
inbound_serial_tx.blocking_send(m)?;
}
}