- 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
65 lines
1.8 KiB
Rust
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
|
|
}
|
|
}
|