1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use flmodules::broker::Broker;
use flnet::{
    config::NodeConfig,
    network::{Network, NetworkMessage},
    web_rtc::WebRTCConn,
};
use thiserror::Error;
use web_rtc_setup::web_rtc_spawner;
use web_socket_client::WebSocketClient;

pub mod web_rtc_setup;
pub mod web_socket_client;
pub mod web_socket_server;

#[derive(Error, Debug)]
pub enum NetworkSetupError {
    #[error(transparent)]
    Broker(#[from] flmodules::broker::BrokerError),
    #[error(transparent)]
    WebSocket(#[from] web_socket_server::WSSError),
    #[error(transparent)]
    Network(#[from] flnet::network::NetworkError)
}

pub async fn network_start(
    node_config: NodeConfig,
    signal_url: &str,
) -> Result<Broker<NetworkMessage>, NetworkSetupError> {
    let webrtc = WebRTCConn::new(web_rtc_spawner()).await?;
    let ws = WebSocketClient::connect(signal_url).await?;
    Ok(Network::start(node_config.clone(), ws, webrtc).await?)
}