Files
pmomusic/pmomediaserver/src/server_ext.rs
Eric Coissac 934bbaf4b8 ⬆️ migration mdns →mddns-sd
- Remplacer la crate abandonnée `mdns` (3.0, non-UTF8) par activement maintenue et UTF‑compliant `mdns-sd` (0.19)
- Supprimer les dépendances inutiles `async‑std`, `futures-util` (uniquement utilisées dans le thread mDNS)
- Refactoriser `control_point.rs` : passer d’un bloc async bloquant à une boucle synchrone avec `ServiceDaemon.browse()` + récepteur blocant
- Simplifier drastiquement le parsing dans `chromecast_discovery.rs` via l’API haut‑niveau de mdns-sd (`ServiceInfo`, `get_property_val_str`) → ~80 lignes remplacées par 52
- Ajouter index SQLite `idx_metadata_key_value` pour accélérer les requêtes par origin_url
- Nettoyer exports inutiles dans `pmomediaserver::server_ext`
- Supprimer filtre de bruit obsolète `mdns=error` dans les logs
- Met à jour la version en 0.3.42
2026-04-09 15:50:18 +02:00

65 lines
1.8 KiB
Rust

//! # Extension trait pour le serveur MediaServer
//!
//! Ce module fournit un trait d'extension pour `pmoserver::Server` permettant
//! d'enregistrer facilement des sources musicales et de configurer le MediaServer.
//!
//! **Note**: Ce module réexporte `MusicSourceExt` de `pmosource` et ajoute des
//! méthodes spécifiques au MediaServer UPnP.
use async_trait::async_trait;
use pmoserver::Server;
use pmosource::MusicSource;
use std::sync::Arc;
// Réexporter le trait de base de pmosource
pub use pmosource::MusicSourceExt;
/// Trait d'extension pour le serveur MediaServer UPnP
///
/// Ce trait ajoute des méthodes spécifiques au MediaServer UPnP.
/// Pour l'enregistrement de sources, utilisez le trait `MusicSourceExt` de `pmosource`.
///
/// **Note**: Ce trait est maintenant deprecated. Utilisez directement `MusicSourceExt`
/// de `pmosource` pour l'enregistrement et la gestion des sources.
///
/// # Migration
///
/// Ancien code :
/// ```ignore
/// use pmomediaserver::server_ext::MediaServerExt;
/// server.register_music_source(source).await;
/// ```
///
/// Nouveau code :
/// ```ignore
/// use pmosource::MusicSourceExt;
/// server.register_music_source(source).await;
/// ```
#[async_trait]
pub trait MediaServerExt {
/// Compte le nombre de sources musicales enregistrées
///
/// # Returns
///
/// Le nombre total de sources.
async fn count_music_sources(&self) -> usize {
pmosource::api::list_all_sources().await.len()
}
}
#[async_trait]
impl MediaServerExt for Server {
// Implementation par défaut fournie dans le trait
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_trait_exists() {
// Ce test vérifie simplement que le module compile
// Les tests fonctionnels sont maintenant dans pmosource
}
}