1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//! Event handling framework for Sonos UPnP services
//!
//! This module provides a comprehensive event handling system that consolidates
//! event processing logic from across the Sonos SDK. Each service handles its
//! own event types and parsing logic, while this framework provides common
//! infrastructure for event processing, routing, and management.
//!
//! # Architecture
//!
//! - **Service-specific events**: Each service module (av_transport, rendering_control, etc.)
//! defines its own event types and parsing logic in an `events` submodule
//! - **Common framework**: This module provides generic event processing infrastructure
//! - **Type safety**: Events are strongly typed per service while maintaining flexibility
//!
//! # Usage
//!
//! ## Service-specific event handling
//! ```rust,ignore
//! use sonos_api::services::av_transport;
//! use sonos_api::events::EventSource;
//!
//! // Parse an AVTransport event
//! let parser = av_transport::events::AVTransportEventParser;
//! let event_data = parser.parse_upnp_event(xml_content)?;
//!
//! // Create enriched event
//! let enriched = av_transport::events::create_enriched_event(
//! speaker_ip,
//! EventSource::UPnPNotification { subscription_id: "uuid:123".to_string() },
//! event_data
//! );
//! ```
//!
//! ## Generic event processing
//! ```rust,ignore
//! use sonos_api::events::{EventParserRegistry, EventProcessor};
//!
//! // Register parsers for all services
//! let mut registry = EventParserRegistry::new();
//! registry.register(av_transport::events::AVTransportEventParser);
//! registry.register(rendering_control::events::RenderingControlEventParser);
//!
//! // Process events generically
//! let processor = EventProcessor::new(registry);
//! processor.process_event(service, xml_content, event_source)?;
//! ```
// Re-export common types for convenience
pub use EventProcessor;
pub use ;
pub use ;