45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
use std::process::exit;
|
|
|
|
use std::sync::mpsc::{channel, Receiver};
|
|
|
|
mod audio;
|
|
mod config;
|
|
mod player;
|
|
mod ssonic;
|
|
mod utils;
|
|
|
|
fn init() -> Result<Receiver<utils::Error>, 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() {
|
|
let err_chan = match init() {
|
|
Err(x) => {
|
|
eprintln!("{}", x);
|
|
exit(1)
|
|
}
|
|
Ok(err_chan) => err_chan,
|
|
};
|
|
match err_chan.recv() {
|
|
Err(_) => exit(0),
|
|
Ok(err) => {
|
|
eprintln!("{}", err);
|
|
exit(1)
|
|
}
|
|
}
|
|
}
|