songbird 0.6.0

An async Rust library for the Discord voice API.
use super::context_data::*;
use crate::ConnectionInfo;

#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct InternalConnect {
    pub info: ConnectionInfo,
    pub ssrc: u32,
}

#[derive(Debug)]
pub struct InternalDisconnect {
    pub kind: DisconnectKind,
    pub reason: Option<DisconnectReason>,
    pub info: ConnectionInfo,
}

impl<'a> From<&'a InternalConnect> for ConnectData<'a> {
    fn from(val: &'a InternalConnect) -> Self {
        Self {
            channel_id: val.info.channel_id,
            guild_id: val.info.guild_id,
            session_id: &val.info.session_id,
            server: &val.info.endpoint,
            ssrc: val.ssrc,
        }
    }
}

impl<'a> From<&'a InternalDisconnect> for DisconnectData<'a> {
    fn from(val: &'a InternalDisconnect) -> Self {
        Self {
            kind: val.kind,
            reason: val.reason,
            channel_id: val.info.channel_id,
            guild_id: val.info.guild_id,
            session_id: &val.info.session_id,
        }
    }
}

#[cfg(feature = "receive")]
mod receive {
    use super::*;
    use bytes::Bytes;

    #[derive(Clone, Debug, Eq, PartialEq)]
    pub struct InternalRtpPacket {
        pub packet: Bytes,
        pub payload_offset: usize,
        pub payload_end_pad: usize,
    }

    #[derive(Clone, Debug, Eq, PartialEq)]
    pub struct InternalRtcpPacket {
        pub packet: Bytes,
        pub payload_offset: usize,
        pub payload_end_pad: usize,
    }

    impl<'a> From<&'a InternalRtpPacket> for RtpData {
        fn from(val: &'a InternalRtpPacket) -> Self {
            Self {
                packet: val.packet.clone(),
                payload_offset: val.payload_offset,
                payload_end_pad: val.payload_end_pad,
            }
        }
    }

    impl<'a> From<&'a InternalRtcpPacket> for RtcpData {
        fn from(val: &'a InternalRtcpPacket) -> Self {
            Self {
                packet: val.packet.clone(),
                payload_offset: val.payload_offset,
                payload_end_pad: val.payload_end_pad,
            }
        }
    }
}

#[cfg(feature = "receive")]
pub use receive::*;