Compare commits

..

1 commit

Author SHA1 Message Date
Joe Ardent
0d984bfaa5 minor code tidy 2025-10-07 16:28:20 -07:00
2 changed files with 13 additions and 10 deletions

View file

@ -36,7 +36,7 @@ pub type Peers = Arc<RwLock<BTreeMap<String, (SocketAddr, Device)>>>;
pub type Sessions = Arc<RwLock<BTreeMap<String, Session>>>; // Session ID to Session pub type Sessions = Arc<RwLock<BTreeMap<String, Session>>>; // Session ID to Session
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum JocalTasks { pub enum JocalTask {
Udp, Udp,
Http, Http,
Multicast, Multicast,
@ -143,14 +143,16 @@ impl JocalService {
)) ))
} }
pub async fn start(&self, handles: &mut JoinSet<JocalTasks>) { pub async fn start(&self) -> JoinSet<JocalTask> {
let service = self.clone(); let service = self.clone();
let mut handles = JoinSet::new();
handles.spawn(async move { handles.spawn(async move {
if let Err(e) = service.start_http_server().await { if let Err(e) = service.start_http_server().await {
error!("HTTP server error: {e}"); error!("HTTP server error: {e}");
} }
JocalTasks::Http JocalTask::Http
}); });
let service = self.clone(); let service = self.clone();
@ -158,7 +160,7 @@ impl JocalService {
if let Err(e) = service.listen_multicast().await { if let Err(e) = service.listen_multicast().await {
error!("UDP listener error: {e}"); error!("UDP listener error: {e}");
} }
JocalTasks::Multicast JocalTask::Multicast
}); });
let service = self.clone(); let service = self.clone();
@ -178,7 +180,7 @@ impl JocalService {
break; break;
} }
} }
JocalTasks::Tick JocalTask::Tick
}); });
let service = self.clone(); let service = self.clone();
@ -195,8 +197,10 @@ impl JocalService {
break; break;
} }
} }
JocalTasks::Udp JocalTask::Udp
}); });
handles
} }
pub async fn stop(&self) { pub async fn stop(&self) {

View file

@ -1,7 +1,7 @@
use std::{path::Path, str::FromStr, time::Duration}; use std::{path::Path, str::FromStr, time::Duration};
use clap::Parser; use clap::Parser;
use jocalsend::{Config, DEFAULT_INTERVAL, JocalService, JocalTasks, error::Result}; use jocalsend::{Config, DEFAULT_INTERVAL, JocalService, JocalTask, error::Result};
use log::{error, info}; use log::{error, info};
use ratatui::DefaultTerminal; use ratatui::DefaultTerminal;
use ratatui_explorer::FileExplorer; use ratatui_explorer::FileExplorer;
@ -51,8 +51,7 @@ async fn start_and_run(terminal: &mut DefaultTerminal, config: Config) -> Result
set_file_selection(&path, app.files()); set_file_selection(&path, app.files());
} }
let mut handles = JoinSet::new(); let mut handles = app.service.start().await;
app.service.start(&mut handles).await;
let shutdown = shutdown(&mut handles); let shutdown = shutdown(&mut handles);
let mut shutdown = std::pin::pin!(shutdown); let mut shutdown = std::pin::pin!(shutdown);
loop { loop {
@ -103,7 +102,7 @@ async fn start_and_run(terminal: &mut DefaultTerminal, config: Config) -> Result
Ok(()) Ok(())
} }
async fn shutdown(handles: &mut JoinSet<JocalTasks>) { async fn shutdown(handles: &mut JoinSet<JocalTask>) {
let mut timeout = tokio::time::interval(Duration::from_secs(5)); let mut timeout = tokio::time::interval(Duration::from_secs(5));
timeout.tick().await; timeout.tick().await;
loop { loop {