better service construction
This commit is contained in:
parent
0666895fdd
commit
b2de9352d3
2 changed files with 18 additions and 19 deletions
29
src/lib.rs
29
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<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 {
|
||||
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<Listeners>) {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue