Skip to main content

cast_sender/
payload.rs

1use crate::namespace::{
2    connection::*, heartbeat::*, media::*, multizone::*, receiver::*, Custom, NamespaceUrn,
3};
4
5#[derive(Serialize, Deserialize, Clone, Debug)]
6#[allow(clippy::large_enum_variant)]
7#[serde(untagged)]
8pub enum Payload {
9    Connection(Connection),
10    Heartbeat(Heartbeat),
11    Media(Media),
12    Multizone(Multizone),
13    Receiver(Receiver),
14    // Fallback -> Needs to be last enum variant!
15    Custom(Custom),
16}
17
18impl Payload {
19    pub fn namespace(&self) -> NamespaceUrn {
20        match self {
21            Payload::Connection(_) => NamespaceUrn::Connection,
22            Payload::Heartbeat(_) => NamespaceUrn::Heartbeat,
23            Payload::Media(_) => NamespaceUrn::Media,
24            Payload::Multizone(_) => NamespaceUrn::Multizone,
25            Payload::Receiver(_) => NamespaceUrn::Receiver,
26            Payload::Custom(pl) => pl.namespace.clone(),
27        }
28    }
29}