better service construction

This commit is contained in:
Joe Ardent 2025-08-10 15:08:10 -07:00
parent 0666895fdd
commit b2de9352d3
2 changed files with 18 additions and 19 deletions

View file

@ -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<TransferEvent>,
) -> crate::error::Result<Self> {
) -> crate::error::Result<(Self, UnboundedReceiver<TransferEvent>)> {
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 {
Ok((
Self {
config,
client,
socket: socket.into(),
transfer_event_tx,
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<Listeners>) {

View file

@ -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);