added Controller Handle and Input structs

This commit is contained in:
MrDulfin 2024-09-29 23:19:03 -04:00
parent 15988ae808
commit ab5c65d64d

View file

@ -108,16 +108,31 @@ pub enum QueueResponse {
Item(QueueItem<QueueSong, QueueAlbum>), Item(QueueItem<QueueSong, QueueAlbum>),
} }
#[allow(unused_variables)]
impl<'c, P: Player + Send + Sync> Controller<'c, P> { pub struct ControllerInput<'a> {
pub async fn start(
player_mail: ( player_mail: (
MailMan<PlayerCommand, PlayerResponse>, MailMan<PlayerCommand, PlayerResponse>,
MailMan<PlayerResponse, PlayerCommand>, MailMan<PlayerResponse, PlayerCommand>,
), ),
lib_mail: MailMan<LibraryResponse, LibraryCommand>, lib_mail: MailMan<LibraryResponse, LibraryCommand>,
mut library: MusicLibrary, library: &'a mut MusicLibrary,
config: Arc<RwLock<Config>>, config: Arc<RwLock<Config>>,
}
pub struct ControllerHandle {
lib_mail: MailMan<LibraryCommand, LibraryResponse>,
player_mail: MailMan<PlayerCommand, PlayerResponse>,
}
#[allow(unused_variables)]
impl<'c, P: Player + Send + Sync> Controller<'c, P> {
pub async fn start(
ControllerInput {
player_mail,
lib_mail,
library,
config
}: ControllerInput<'c>
) -> Result<(), Box<dyn Error>> ) -> Result<(), Box<dyn Error>>
where where
P: Player, P: Player,
@ -171,7 +186,7 @@ impl<'c, P: Player + Send + Sync> Controller<'c, P> {
.await; .await;
scope scope
.spawn(async { .spawn(async {
Controller::<P>::inner_library_loop(inner_lib_mail.1, &mut library) Controller::<P>::inner_library_loop(inner_lib_mail.1, library)
.await .await
.unwrap() .unwrap()
}) })
@ -420,7 +435,7 @@ mod test_super {
let a = spawn(move || { let a = spawn(move || {
futures::executor::block_on(async { futures::executor::block_on(async {
let config = Config::read_file(PathBuf::from(std::env!("CONFIG-PATH"))).unwrap(); let config = Config::read_file(PathBuf::from(std::env!("CONFIG-PATH"))).unwrap();
let library = { let mut library = {
MusicLibrary::init( MusicLibrary::init(
config.libraries.get_default().unwrap().path.clone(), config.libraries.get_default().unwrap().path.clone(),
config.libraries.get_default().unwrap().uuid, config.libraries.get_default().unwrap().uuid,
@ -429,10 +444,12 @@ mod test_super {
}; };
Controller::<GStreamer>::start( Controller::<GStreamer>::start(
crate::music_controller::controller::ControllerInput {
player_mail, player_mail,
lib_mail.1, lib_mail: lib_mail.1,
library, library: &mut library,
Arc::new(RwLock::new(config)), config: Arc::new(RwLock::new(config)),
}
) )
.await .await
.unwrap(); .unwrap();