Déplacer cache registry dans les crates individuelles (pattern singleton)
Au lieu d'avoir un cache_registry centralisé dans pmoupnp qui créait des dépendances circulaires, chaque crate a maintenant son propre singleton global : - pmoaudiocache : register_audio_cache() + get_audio_cache() - pmocovers : register_cover_cache() + get_cover_cache() Changes: - Add singleton pattern to pmoaudiocache/src/lib.rs - Add singleton pattern to pmocovers/src/lib.rs - Add once_cell dependency to both crates - Update pmoplaylist to use pmoaudiocache::get_audio_cache() as fallback - Update pmoupnp/upnp_server.rs to use register_* functions - Update pmoupnp/lib.rs to reexport only get_* (not register_*) - Remove pmoupnp/src/cache_registry.rs (no longer needed) pmoupnp réexporte get_audio_cache() et get_cover_cache() pour compatibilité avec le code existant (pmosource, etc.).
This commit is contained in:
@@ -26,7 +26,6 @@ use pmoserver::Server;
|
||||
use utoipa::OpenApi;
|
||||
|
||||
use crate::UpnpModel;
|
||||
use crate::cache_registry::CACHE_REGISTRY;
|
||||
use crate::devices::errors::DeviceError;
|
||||
use crate::devices::{Device, DeviceInstance, DeviceRegistry};
|
||||
use crate::ssdp::SsdpServer;
|
||||
@@ -330,12 +329,8 @@ impl UpnpServerExt for Server {
|
||||
let openapi = pmocovers::ApiDoc::openapi();
|
||||
self.add_openapi(api_router, openapi, "covers").await;
|
||||
|
||||
// Enregistrer base_url et cache dans le registre global
|
||||
{
|
||||
let mut registry = CACHE_REGISTRY.write().unwrap();
|
||||
registry.set_base_url(base_url);
|
||||
registry.set_cover_cache(cache.clone());
|
||||
}
|
||||
// Enregistrer le cache dans le registre global
|
||||
pmocovers::register_cover_cache(cache.clone());
|
||||
|
||||
Ok(cache)
|
||||
}
|
||||
@@ -360,12 +355,8 @@ impl UpnpServerExt for Server {
|
||||
let openapi = pmoaudiocache::ApiDoc::openapi();
|
||||
self.add_openapi(api_router, openapi, "audio").await;
|
||||
|
||||
// Enregistrer base_url et cache dans le registre global
|
||||
{
|
||||
let mut registry = CACHE_REGISTRY.write().unwrap();
|
||||
registry.set_base_url(base_url);
|
||||
registry.set_audio_cache(cache.clone());
|
||||
}
|
||||
// Enregistrer le cache dans le registre global
|
||||
pmoaudiocache::register_audio_cache(cache.clone());
|
||||
|
||||
Ok(cache)
|
||||
}
|
||||
@@ -388,11 +379,11 @@ impl UpnpServerExt for Server {
|
||||
}
|
||||
|
||||
fn cover_cache(&self) -> Option<Arc<CoverCache>> {
|
||||
crate::cache_registry::get_cover_cache()
|
||||
pmocovers::get_cover_cache()
|
||||
}
|
||||
|
||||
fn audio_cache(&self) -> Option<Arc<AudioCache>> {
|
||||
crate::cache_registry::get_audio_cache()
|
||||
pmoaudiocache::get_audio_cache()
|
||||
}
|
||||
|
||||
// ========= SSDP Management Implementation =========
|
||||
|
||||
Reference in New Issue
Block a user