Compare commits

..

No commits in common. "main" and "1.618033988" have entirely different histories.

2 changed files with 10 additions and 13 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
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum JocalTask {
pub enum JocalTasks {
Udp,
Http,
Multicast,
@ -143,16 +143,14 @@ impl JocalService {
))
}
pub async fn start(&self) -> JoinSet<JocalTask> {
pub async fn start(&self, handles: &mut JoinSet<JocalTasks>) {
let service = self.clone();
let mut handles = JoinSet::new();
handles.spawn(async move {
if let Err(e) = service.start_http_server().await {
error!("HTTP server error: {e}");
}
JocalTask::Http
JocalTasks::Http
});
let service = self.clone();
@ -160,7 +158,7 @@ impl JocalService {
if let Err(e) = service.listen_multicast().await {
error!("UDP listener error: {e}");
}
JocalTask::Multicast
JocalTasks::Multicast
});
let service = self.clone();
@ -180,7 +178,7 @@ impl JocalService {
break;
}
}
JocalTask::Tick
JocalTasks::Tick
});
let service = self.clone();
@ -197,10 +195,8 @@ impl JocalService {
break;
}
}
JocalTask::Udp
JocalTasks::Udp
});
handles
}
pub async fn stop(&self) {

View file

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