better service construction
This commit is contained in:
parent
0666895fdd
commit
b2de9352d3
2 changed files with 18 additions and 19 deletions
15
src/lib.rs
15
src/lib.rs
|
@ -21,7 +21,7 @@ use tokio::{
|
||||||
net::UdpSocket,
|
net::UdpSocket,
|
||||||
sync::{
|
sync::{
|
||||||
Mutex,
|
Mutex,
|
||||||
mpsc::{self, UnboundedSender},
|
mpsc::{self, UnboundedReceiver, UnboundedSender},
|
||||||
},
|
},
|
||||||
task::JoinSet,
|
task::JoinSet,
|
||||||
};
|
};
|
||||||
|
@ -88,8 +88,8 @@ pub struct JocalService {
|
||||||
impl JocalService {
|
impl JocalService {
|
||||||
pub async fn new(
|
pub async fn new(
|
||||||
config: Config,
|
config: Config,
|
||||||
transfer_event_tx: UnboundedSender<TransferEvent>,
|
) -> crate::error::Result<(Self, UnboundedReceiver<TransferEvent>)> {
|
||||||
) -> crate::error::Result<Self> {
|
let (tx, rx) = mpsc::unbounded_channel();
|
||||||
let socket = UdpSocket::bind(LISTENING_SOCKET_ADDR).await?;
|
let socket = UdpSocket::bind(LISTENING_SOCKET_ADDR).await?;
|
||||||
socket.set_multicast_loop_v4(true)?;
|
socket.set_multicast_loop_v4(true)?;
|
||||||
socket.set_multicast_ttl_v4(8)?; // 8 hops out from localnet
|
socket.set_multicast_ttl_v4(8)?; // 8 hops out from localnet
|
||||||
|
@ -100,16 +100,19 @@ impl JocalService {
|
||||||
.danger_accept_invalid_certs(true)
|
.danger_accept_invalid_certs(true)
|
||||||
.build()?;
|
.build()?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok((
|
||||||
|
Self {
|
||||||
config,
|
config,
|
||||||
client,
|
client,
|
||||||
socket: socket.into(),
|
socket: socket.into(),
|
||||||
transfer_event_tx,
|
transfer_event_tx: tx,
|
||||||
peers: Default::default(),
|
peers: Default::default(),
|
||||||
sessions: Default::default(),
|
sessions: Default::default(),
|
||||||
running_state: Default::default(),
|
running_state: Default::default(),
|
||||||
http_handle: Default::default(),
|
http_handle: Default::default(),
|
||||||
})
|
},
|
||||||
|
rx,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn start(&self, handles: &mut JoinSet<Listeners>) {
|
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 log::{error, info};
|
||||||
use ratatui::DefaultTerminal;
|
use ratatui::DefaultTerminal;
|
||||||
use ratatui_explorer::FileExplorer;
|
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};
|
use tui_logger::{LevelFilter, init_logger, set_env_filter_from_env};
|
||||||
|
|
||||||
mod app;
|
mod app;
|
||||||
|
@ -37,11 +37,7 @@ fn main() -> Result<()> {
|
||||||
|
|
||||||
#[tokio::main(flavor = "multi_thread")]
|
#[tokio::main(flavor = "multi_thread")]
|
||||||
async fn start_and_run(terminal: &mut DefaultTerminal, config: Config) -> Result<()> {
|
async fn start_and_run(terminal: &mut DefaultTerminal, config: Config) -> Result<()> {
|
||||||
let (event_tx, event_listener) = unbounded_channel();
|
let (service, event_listener) = JocalService::new(config.clone()).await?;
|
||||||
|
|
||||||
let service = JocalService::new(config.clone(), event_tx)
|
|
||||||
.await
|
|
||||||
.expect("Could not create JocalService");
|
|
||||||
|
|
||||||
let mut app = App::new(service, event_listener);
|
let mut app = App::new(service, event_listener);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue