diff --git a/src/lib.rs b/src/lib.rs index c9b71a2..dbec578 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,7 +21,7 @@ use tokio::{ net::UdpSocket, sync::{ Mutex, - mpsc::{self, UnboundedSender}, + mpsc::{self, UnboundedReceiver, UnboundedSender}, }, task::JoinSet, }; @@ -88,8 +88,8 @@ pub struct JocalService { impl JocalService { pub async fn new( config: Config, - transfer_event_tx: UnboundedSender, - ) -> crate::error::Result { + ) -> crate::error::Result<(Self, UnboundedReceiver)> { + let (tx, rx) = mpsc::unbounded_channel(); let socket = UdpSocket::bind(LISTENING_SOCKET_ADDR).await?; socket.set_multicast_loop_v4(true)?; socket.set_multicast_ttl_v4(8)?; // 8 hops out from localnet @@ -100,16 +100,19 @@ impl JocalService { .danger_accept_invalid_certs(true) .build()?; - Ok(Self { - config, - client, - socket: socket.into(), - transfer_event_tx, - peers: Default::default(), - sessions: Default::default(), - running_state: Default::default(), - http_handle: Default::default(), - }) + Ok(( + Self { + config, + client, + socket: socket.into(), + transfer_event_tx: tx, + peers: Default::default(), + sessions: Default::default(), + running_state: Default::default(), + http_handle: Default::default(), + }, + rx, + )) } pub async fn start(&self, handles: &mut JoinSet) { diff --git a/src/main.rs b/src/main.rs index f50d375..81b28e4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ use jocalsend::{Config, JocalService, Listeners, error::Result}; use log::{error, info}; use ratatui::DefaultTerminal; use ratatui_explorer::FileExplorer; -use tokio::{sync::mpsc::unbounded_channel, task::JoinSet}; +use tokio::task::JoinSet; use tui_logger::{LevelFilter, init_logger, set_env_filter_from_env}; mod app; @@ -37,11 +37,7 @@ fn main() -> Result<()> { #[tokio::main(flavor = "multi_thread")] async fn start_and_run(terminal: &mut DefaultTerminal, config: Config) -> Result<()> { - let (event_tx, event_listener) = unbounded_channel(); - - let service = JocalService::new(config.clone(), event_tx) - .await - .expect("Could not create JocalService"); + let (service, event_listener) = JocalService::new(config.clone()).await?; let mut app = App::new(service, event_listener);