Events: Remove deprecated events. (#115)

This removes the `ClientConnect`, `DriverConnectFailed`, `DriverReconnectFailed` and `SsrcKnown` events.

Tested using `cargo make ready`.
This commit is contained in:
Kyle Simpson
2022-02-14 15:04:06 +00:00
parent 0730a00dc7
commit ac20764157
5 changed files with 21 additions and 129 deletions

View File

@@ -7,7 +7,6 @@ use super::{
}; };
use crate::{ use crate::{
constants::*, constants::*,
events::CoreContext,
model::{ model::{
payload::{Identify, Resume, SelectProtocol}, payload::{Identify, Resume, SelectProtocol},
Event as GatewayEvent, Event as GatewayEvent,
@@ -211,10 +210,6 @@ impl Connection {
.mixer .mixer
.send(MixerMessage::SetConn(mix_conn, ready.ssrc))?; .send(MixerMessage::SetConn(mix_conn, ready.ssrc))?;
let _ = interconnect
.events
.send(EventMessage::FireCoreEvent(CoreContext::SsrcKnown(ssrc)));
spawn(ws_task::runner( spawn(ws_task::runner(
interconnect.clone(), interconnect.clone(),
ws_msg_rx, ws_msg_rx,

View File

@@ -330,10 +330,6 @@ impl ConnectionRetryData {
// See above. // See above.
let _ = tx.send(Err(why)); let _ = tx.send(Err(why));
let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverConnectFailed,
));
let _ = interconnect.events.send(EventMessage::FireCoreEvent( let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverDisconnect(InternalDisconnect { CoreContext::DriverDisconnect(InternalDisconnect {
kind: DisconnectKind::Connect, kind: DisconnectKind::Connect,
@@ -343,10 +339,6 @@ impl ConnectionRetryData {
)); ));
}, },
ConnectionFlavour::Reconnect => { ConnectionFlavour::Reconnect => {
let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverReconnectFailed,
));
let _ = interconnect.events.send(EventMessage::FireCoreEvent( let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverDisconnect(InternalDisconnect { CoreContext::DriverDisconnect(InternalDisconnect {
kind: DisconnectKind::Reconnect, kind: DisconnectKind::Reconnect,

View File

@@ -200,9 +200,7 @@ impl AuxNetwork {
)); ));
}, },
GatewayEvent::ClientConnect(ev) => { GatewayEvent::ClientConnect(ev) => {
let _ = interconnect debug!("Received discontinued ClientConnect: {:?}", ev);
.events
.send(EventMessage::FireCoreEvent(CoreContext::ClientConnect(ev)));
}, },
GatewayEvent::ClientDisconnect(ev) => { GatewayEvent::ClientDisconnect(ev) => {
let _ = interconnect.events.send(EventMessage::FireCoreEvent( let _ = interconnect.events.send(EventMessage::FireCoreEvent(

View File

@@ -3,7 +3,7 @@ pub(crate) mod internal_data;
use super::*; use super::*;
use crate::{ use crate::{
model::payload::{ClientConnect, ClientDisconnect, Speaking}, model::payload::{ClientDisconnect, Speaking},
tracks::{TrackHandle, TrackState}, tracks::{TrackHandle, TrackState},
}; };
pub use data as context_data; pub use data as context_data;
@@ -38,66 +38,14 @@ pub enum EventContext<'a> {
VoicePacket(VoiceData<'a>), VoicePacket(VoiceData<'a>),
/// Telemetry/statistics packet, received from another stream. /// Telemetry/statistics packet, received from another stream.
RtcpPacket(RtcpData<'a>), RtcpPacket(RtcpData<'a>),
#[deprecated(
since = "0.2.2",
note = "ClientConnect events are no longer sent by Discord. Please use SpeakingStateUpdate or Discord gateway events."
)]
/// Formerly fired whenever a client connects to a call for the first time, allowing SSRC/UserID
/// matching. This event no longer fires.
///
/// To detect when a user connects, you must correlate gateway (e.g., VoiceStateUpdate) events
/// from the main part of your bot.
///
/// To obtain a user's SSRC, you must use [`SpeakingStateUpdate`] events.
///
/// [`SpeakingStateUpdate`]: Self::SpeakingStateUpdate
ClientConnect(ClientConnect),
/// Fired whenever a client disconnects. /// Fired whenever a client disconnects.
ClientDisconnect(ClientDisconnect), ClientDisconnect(ClientDisconnect),
/// Fires when this driver successfully connects to a voice channel. /// Fires when this driver successfully connects to a voice channel.
DriverConnect(ConnectData<'a>), DriverConnect(ConnectData<'a>),
/// Fires when this driver successfully reconnects after a network error. /// Fires when this driver successfully reconnects after a network error.
DriverReconnect(ConnectData<'a>), DriverReconnect(ConnectData<'a>),
#[deprecated(
since = "0.2.0",
note = "Please use the DriverDisconnect event instead."
)]
/// Fires when this driver fails to connect to a voice channel.
///
/// Users will need to manually reconnect on receipt of this error.
/// **This event is deprecated in favour of [`DriverDisconnect`].**
///
/// [`DriverDisconnect`]: Self::DriverDisconnect
// TODO: remove in 0.3.x
DriverConnectFailed,
#[deprecated(
since = "0.2.0",
note = "Please use the DriverDisconnect event instead."
)]
/// Fires when this driver fails to reconnect to a voice channel after a network error.
///
/// Users will need to manually reconnect on receipt of this error.
/// **This event is deprecated in favour of [`DriverDisconnect`].**
///
/// [`DriverDisconnect`]: Self::DriverDisconnect
// TODO: remove in 0.3.x
DriverReconnectFailed,
/// Fires when this driver fails to connect to, or drops from, a voice channel. /// Fires when this driver fails to connect to, or drops from, a voice channel.
DriverDisconnect(DisconnectData<'a>), DriverDisconnect(DisconnectData<'a>),
#[deprecated(
since = "0.2.0",
note = "Please use the DriverConnect/Reconnect events instead."
)]
/// Fires whenever the driver is assigned a new [RTP SSRC] by the voice server.
///
/// This typically fires alongside a [DriverConnect], or a full [DriverReconnect].
/// **This event is *deprecated* in favour of these alternatives**.
///
/// [RTP SSRC]: https://tools.ietf.org/html/rfc3550#section-3
/// [DriverConnect]: Self::DriverConnect
/// [DriverReconnect]: Self::DriverReconnect
// TODO: remove in 0.3.x
SsrcKnown(u32),
} }
#[derive(Debug)] #[derive(Debug)]
@@ -106,14 +54,10 @@ pub enum CoreContext {
SpeakingUpdate(InternalSpeakingUpdate), SpeakingUpdate(InternalSpeakingUpdate),
VoicePacket(InternalVoicePacket), VoicePacket(InternalVoicePacket),
RtcpPacket(InternalRtcpPacket), RtcpPacket(InternalRtcpPacket),
ClientConnect(ClientConnect),
ClientDisconnect(ClientDisconnect), ClientDisconnect(ClientDisconnect),
DriverConnect(InternalConnect), DriverConnect(InternalConnect),
DriverReconnect(InternalConnect), DriverReconnect(InternalConnect),
DriverDisconnect(InternalDisconnect), DriverDisconnect(InternalDisconnect),
DriverConnectFailed,
DriverReconnectFailed,
SsrcKnown(u32),
} }
impl<'a> CoreContext { impl<'a> CoreContext {
@@ -125,18 +69,10 @@ impl<'a> CoreContext {
SpeakingUpdate(evt) => EventContext::SpeakingUpdate(SpeakingUpdateData::from(evt)), SpeakingUpdate(evt) => EventContext::SpeakingUpdate(SpeakingUpdateData::from(evt)),
VoicePacket(evt) => EventContext::VoicePacket(VoiceData::from(evt)), VoicePacket(evt) => EventContext::VoicePacket(VoiceData::from(evt)),
RtcpPacket(evt) => EventContext::RtcpPacket(RtcpData::from(evt)), RtcpPacket(evt) => EventContext::RtcpPacket(RtcpData::from(evt)),
#[allow(deprecated)]
ClientConnect(evt) => EventContext::ClientConnect(*evt),
ClientDisconnect(evt) => EventContext::ClientDisconnect(*evt), ClientDisconnect(evt) => EventContext::ClientDisconnect(*evt),
DriverConnect(evt) => EventContext::DriverConnect(ConnectData::from(evt)), DriverConnect(evt) => EventContext::DriverConnect(ConnectData::from(evt)),
DriverReconnect(evt) => EventContext::DriverReconnect(ConnectData::from(evt)), DriverReconnect(evt) => EventContext::DriverReconnect(ConnectData::from(evt)),
DriverDisconnect(evt) => EventContext::DriverDisconnect(DisconnectData::from(evt)), DriverDisconnect(evt) => EventContext::DriverDisconnect(DisconnectData::from(evt)),
#[allow(deprecated)]
DriverConnectFailed => EventContext::DriverConnectFailed,
#[allow(deprecated)]
DriverReconnectFailed => EventContext::DriverReconnectFailed,
#[allow(deprecated)]
SsrcKnown(s) => EventContext::SsrcKnown(*s),
} }
} }
} }
@@ -152,18 +88,10 @@ impl EventContext<'_> {
SpeakingUpdate(_) => Some(CoreEvent::SpeakingUpdate), SpeakingUpdate(_) => Some(CoreEvent::SpeakingUpdate),
VoicePacket(_) => Some(CoreEvent::VoicePacket), VoicePacket(_) => Some(CoreEvent::VoicePacket),
RtcpPacket(_) => Some(CoreEvent::RtcpPacket), RtcpPacket(_) => Some(CoreEvent::RtcpPacket),
#[allow(deprecated)]
ClientConnect(_) => Some(CoreEvent::ClientConnect),
ClientDisconnect(_) => Some(CoreEvent::ClientDisconnect), ClientDisconnect(_) => Some(CoreEvent::ClientDisconnect),
DriverConnect(_) => Some(CoreEvent::DriverConnect), DriverConnect(_) => Some(CoreEvent::DriverConnect),
DriverReconnect(_) => Some(CoreEvent::DriverReconnect), DriverReconnect(_) => Some(CoreEvent::DriverReconnect),
DriverDisconnect(_) => Some(CoreEvent::DriverDisconnect), DriverDisconnect(_) => Some(CoreEvent::DriverDisconnect),
#[allow(deprecated)]
DriverConnectFailed => Some(CoreEvent::DriverConnectFailed),
#[allow(deprecated)]
DriverReconnectFailed => Some(CoreEvent::DriverReconnectFailed),
#[allow(deprecated)]
SsrcKnown(_) => Some(CoreEvent::SsrcKnown),
_ => None, _ => None,
} }
} }

View File

@@ -4,10 +4,29 @@
/// Core events persist while the `action` in [`EventData`] /// Core events persist while the `action` in [`EventData`]
/// returns `None`. /// returns `None`.
/// ///
/// ## Events from other users
/// Songbird can observe when a user *speaks for the first time* ([`SpeakingStateUpdate`]),
/// when a client leaves the session ([`ClientDisconnect`]), voice packets ([`VoicePacket`]), and
/// telemetry data ([`RtcpPacket`]). The format of voice packets is described by [`VoiceData`].
///
/// To detect when a user connects, you must correlate gateway (e.g., VoiceStateUpdate) events
/// from the main part of your bot.
///
/// To obtain a user's SSRC, you must use [`SpeakingStateUpdate`] events.
///
/// [`EventData`]: super::EventData /// [`EventData`]: super::EventData
/// [`VoiceData`]: super::context::data::VoiceData
/// [`SpeakingStateUpdate`]: Self::SpeakingStateUpdate
/// [`ClientDisconnect`]: Self::ClientDisconnect
/// [`VoicePacket`]: Self::VoicePacket
/// [`RtcpPacket`]: Self::RtcpPacket
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[non_exhaustive] #[non_exhaustive]
pub enum CoreEvent { pub enum CoreEvent {
/// Speaking state update, typically describing how another voice
/// user is transmitting audio data. Clients must send at least one such
/// packet to allow SSRC/UserID matching.
///
/// Fired on receipt of a speaking state update from another host. /// Fired on receipt of a speaking state update from another host.
/// ///
/// Note: this will fire when a user starts speaking for the first time, /// Note: this will fire when a user starts speaking for the first time,
@@ -25,52 +44,12 @@ pub enum CoreEvent {
/// Fires on receipt of an RTCP packet, containing various call stats /// Fires on receipt of an RTCP packet, containing various call stats
/// such as latency reports. /// such as latency reports.
RtcpPacket, RtcpPacket,
#[deprecated(
since = "0.2.2",
note = "ClientConnect events are no longer sent by Discord. Please use SpeakingStateUpdate or Discord gateway events."
)]
/// Formerly fired whenever a client connects to a call for the first time, allowing SSRC/UserID
/// matching. This event no longer fires.
///
/// To detect when a user connects, you must correlate gateway (e.g., VoiceStateUpdate) events
/// from the main part of your bot.
///
/// To obtain a user's SSRC, you must use [`SpeakingStateUpdate`] events.
///
/// [`SpeakingStateUpdate`]: Self::SpeakingStateUpdate
ClientConnect,
/// Fires whenever a user disconnects from the same stream as the bot. /// Fires whenever a user disconnects from the same stream as the bot.
ClientDisconnect, ClientDisconnect,
/// Fires when this driver successfully connects to a voice channel. /// Fires when this driver successfully connects to a voice channel.
DriverConnect, DriverConnect,
/// Fires when this driver successfully reconnects after a network error. /// Fires when this driver successfully reconnects after a network error.
DriverReconnect, DriverReconnect,
#[deprecated(
since = "0.2.0",
note = "Please use the DriverDisconnect event instead."
)]
/// Fires when this driver fails to connect to a voice channel.
DriverConnectFailed,
#[deprecated(
since = "0.2.0",
note = "Please use the DriverDisconnect event instead."
)]
/// Fires when this driver fails to reconnect to a voice channel after a network error.
///
/// Users will need to manually reconnect on receipt of this error.
DriverReconnectFailed,
/// Fires when this driver fails to connect to, or drops from, a voice channel. /// Fires when this driver fails to connect to, or drops from, a voice channel.
DriverDisconnect, DriverDisconnect,
/// Fires whenever the driver is assigned a new [RTP SSRC] by the voice server.
///
/// This typically fires alongside a [DriverConnect], or a full [DriverReconnect].
///
/// [RTP SSRC]: https://tools.ietf.org/html/rfc3550#section-3
/// [DriverConnect]: Self::DriverConnect
/// [DriverReconnect]: Self::DriverReconnect
#[deprecated(
since = "0.2.0",
note = "Please use the DriverConnect/Reconnect events instead."
)]
SsrcKnown,
} }