Files
pmomusic/pmomediaserver
Eric Coissac 5b8642a70b Migrate pmoutils to registry and refactor dependencies
Migrate pmoutils crate to registry version 0.1.2 and update all dependencies to use the registry version instead of local path references. Remove pmoutils from Cargo.lock and Cargo.toml files where it was previously used as a local path dependency. Move ToXmlElement trait to pmodidl crate and update all usages to import from pmodidl instead of pmoutils. Fix parameter order in find_process_using_port function call.
2026-03-01 21:43:15 +01:00
..

pmomediaserver

Implémentation d'un MediaServer UPnP conforme à la spécification UPnP AV Architecture.

Description

Cette crate fournit un MediaServer UPnP qui permet d'exposer et de servir du contenu audio à des clients UPnP (MediaRenderer). Elle suit le même modèle architectural que la crate pmomediarenderer.

Architecture

Le MediaServer est composé de deux services obligatoires :

  • ContentDirectory : Gestion du contenu et de la navigation dans la bibliothèque musicale
  • ConnectionManager : Gestion des connexions et des protocoles supportés

Device UPnP

  • Type : urn:schemas-upnp-org:device:MediaServer:1
  • Services : ContentDirectory:1, ConnectionManager:1

Utilisation

use pmomediaserver::MEDIA_SERVER;
use pmoupnp::UpnpServer;

// Le device est déjà configuré avec tous ses services
let server = MEDIA_SERVER.clone();

// Créer une instance du server
let instance = server.create_instance();

// Enregistrer le server sur un serveur UPnP
upnp_server.register_device(server).await?;

Dépendances

  • pmoupnp : Fournit l'infrastructure UPnP de base (devices, services, actions, state variables)
  • pmodidl : Pour la gestion des métadonnées DIDL-Lite
  • once_cell : Pour les initialisations lazy
  • bevy_reflect : Pour la réflexion et l'introspection

Services

ContentDirectory

Service de gestion du contenu conforme UPnP ContentDirectory:1. Permet de naviguer et rechercher dans la bibliothèque musicale.

Actions supportées :

  • Browse
  • Search
  • GetSearchCapabilities
  • GetSortCapabilities
  • GetSystemUpdateID
  • CreateObject (optionnel)
  • DestroyObject (optionnel)
  • UpdateObject (optionnel)

ConnectionManager

Service de gestion des connexions conforme UPnP ConnectionManager:1. Gère les protocoles supportés.

Actions supportées :

  • GetProtocolInfo
  • GetCurrentConnectionIDs
  • GetCurrentConnectionInfo
  • PrepareForConnection (optionnel)
  • ConnectionComplete (optionnel)

Licence

Voir le fichier LICENSE à la racine du projet.