- Phase 1: Introduce DeviceCommand enum and BrowserAdapter in adapter.rs - Fix P0 bug (play_handler now checks URI before state change) - Phase 2: Wire flac_handle.pause/resume into pause_handler/stop/play - Add VecDeque<DeviceCommand> to RendererState, replace Option<Value> - Phase 3: Add AudioContext + exponential backoff reconnect in PMOPlayer.ts - Fix position format (seconds_to_upnp_time) and add /nowplaying, /state endpoints - Phase 4: Register new HTTP routes in config.rs and implement handlers
1.6 KiB
1.6 KiB
Rapport : Évolution architecture webrenderer
Résumé
Implémentation des phases 0-4 du plan d'évolution : correction du bug P0 (play_handler sans URI), introduction du typage fort avec DeviceCommand/VegearAdapter, integration flac_handle pause/resume, ajout AudioContext avec reconnexion automatique dans PMOPlayer.ts, correction du format de position UPnP, et endpoints JSON nowplaying/state.
Fichiers modifiés
pmowebrenderer/src/handlers.rs- Fix P0 + pause/resume flac_handlepmowebrenderer/src/adapter.rs- Nouveau fichier avec DeviceCommand et DeviceAdapterpmowebrenderer/src/state.rs- VecDeque au lieu de Optionpmowebrenderer/src/pipeline.rs- Ajout flac_handle dans PipelineHandlepmowebrenderer/src/registry.rs- Format position + get_state + get_state_and_udnpmowebrenderer/src/register.rs- Handlers nowplaying et statepmowebrenderer/src/config.rs- Nouvelles routespmowebrenderer/src/lib.rs- Exports adapterpmoapp/webapp/src/services/PMOPlayer.ts- AudioContext + reconnexion
Modifications sémantiques
- P0 : play_handler vérifie URI avant de changement d'état (plus de Transitioning bloqué)
- P1-P2 : DeviceCommand typé compile-time (plus de serde_json Value non typé)
- P3 : pause_handler/stop_handler/play_handler appellent flac_handle.pause()/resume()
- P5 : AudioContext avec createMediaElementSource() et suspend() dans flush()
- P6 : Reconnexion automatique avec backoff exponentiel
- P7 : Format position统一 en HH:MM:SS (seconds_to_upnp_time)
- P8 : Endpoints /nowplaying et /state en JSON