Enorme refactoring de PMO control step 2

This commit is contained in:
2025-12-30 16:50:26 +01:00
parent a4301140d8
commit 9c90e706f1
45 changed files with 4404 additions and 5089 deletions

View File

@@ -1,7 +1,45 @@
mod music_queue;
mod openhome;
mod backend;
mod snapshot;
mod openhome;
mod interne;
pub use music_queue::MusicQueue;
pub use backend::{PlaybackItem, QueueBackend, QueueSnapshot, EnqueueMode};
use std::sync::{Arc, Mutex};
pub use music_queue::MusicQueue;
pub use backend::{QueueBackend, EnqueueMode};
pub use snapshot::{PlaybackItem, QueueSnapshot};
// Internal queue implementations - not part of the public API
pub(crate) use openhome::OpenHomeQueue;
pub(crate) use interne::InternalQueue;
use crate::{RendererInfo, errors::ControlPointError};
pub trait QueueFromRendererInfo {
fn from_renderer_info(renderer: &RendererInfo) -> Result<Self, ControlPointError>
where
Self: Sized;
fn to_backend(self) -> MusicQueue;
fn build_from_renderer_info(
renderer: &RendererInfo,
) -> Result<MusicQueue, ControlPointError>
where
Self: Sized,
{
let instance = Self::from_renderer_info(renderer)?;
Ok(instance.to_backend())
}
fn make_from_renderer_info(
renderer: &RendererInfo,
) -> Result<Arc<Mutex<MusicQueue>>, ControlPointError>
where
Self: Sized,
{
let backend = Self::build_from_renderer_info(renderer)?;
Ok(Arc::new(Mutex::new(backend)))
}
}