use std::process::exit; use std::sync::mpsc::{channel, Receiver}; mod audio; mod config; mod player; mod ssonic; mod utils; fn init() -> Result, utils::Error> { let settings = config::init()?; let (error_in, error_out) = channel(); let (player_events_in, player_events_out) = channel(); let audio_event_chan = audio::init(settings.clone(), error_in.clone(), player_events_in.clone())?; let api_event_chan = ssonic::init(settings.clone(), error_in.clone(), player_events_in.clone())?; let mut player = player::init( settings.clone(), audio_event_chan, api_event_chan, error_in.clone(), player_events_out, )?; player.begin()?; Ok(error_out) } fn main() { match init() { Err(x) => { eprintln!("{}", x); exit(1) } Ok(_) => exit(0), }; }