Skip to content

Commit

Permalink
Events: Remove deprecated events. (#115)
Browse files Browse the repository at this point in the history
This removes the `ClientConnect`, `DriverConnectFailed`, `DriverReconnectFailed` and `SsrcKnown` events.

Tested using `cargo make ready`.
  • Loading branch information
FelixMcFelix committed Feb 14, 2022
1 parent 1e39658 commit e0ab49c
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 129 deletions.
5 changes: 0 additions & 5 deletions src/driver/connection/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ use super::{
};
use crate::{
constants::*,
events::CoreContext,
model::{
payload::{Identify, Resume, SelectProtocol},
Event as GatewayEvent,
Expand Down Expand Up @@ -211,10 +210,6 @@ impl Connection {
.mixer
.send(MixerMessage::SetConn(mix_conn, ready.ssrc))?;

let _ = interconnect
.events
.send(EventMessage::FireCoreEvent(CoreContext::SsrcKnown(ssrc)));

spawn(ws_task::runner(
interconnect.clone(),
ws_msg_rx,
Expand Down
8 changes: 0 additions & 8 deletions src/driver/tasks/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -330,10 +330,6 @@ impl ConnectionRetryData {
// See above.
let _ = tx.send(Err(why));

let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverConnectFailed,
));

let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverDisconnect(InternalDisconnect {
kind: DisconnectKind::Connect,
Expand All @@ -343,10 +339,6 @@ impl ConnectionRetryData {
));
},
ConnectionFlavour::Reconnect => {
let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverReconnectFailed,
));

let _ = interconnect.events.send(EventMessage::FireCoreEvent(
CoreContext::DriverDisconnect(InternalDisconnect {
kind: DisconnectKind::Reconnect,
Expand Down
4 changes: 1 addition & 3 deletions src/driver/tasks/ws.rs
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,7 @@ impl AuxNetwork {
));
},
GatewayEvent::ClientConnect(ev) => {
let _ = interconnect
.events
.send(EventMessage::FireCoreEvent(CoreContext::ClientConnect(ev)));
debug!("Received discontinued ClientConnect: {:?}", ev);
},
GatewayEvent::ClientDisconnect(ev) => {
let _ = interconnect.events.send(EventMessage::FireCoreEvent(
Expand Down
74 changes: 1 addition & 73 deletions src/events/context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pub(crate) mod internal_data;

use super::*;
use crate::{
model::payload::{ClientConnect, ClientDisconnect, Speaking},
model::payload::{ClientDisconnect, Speaking},
tracks::{TrackHandle, TrackState},
};
pub use data as context_data;
Expand Down Expand Up @@ -38,66 +38,14 @@ pub enum EventContext<'a> {
VoicePacket(VoiceData<'a>),
/// Telemetry/statistics packet, received from another stream.
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.
ClientDisconnect(ClientDisconnect),
/// Fires when this driver successfully connects to a voice channel.
DriverConnect(ConnectData<'a>),
/// Fires when this driver successfully reconnects after a network error.
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.
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)]
Expand All @@ -106,14 +54,10 @@ pub enum CoreContext {
SpeakingUpdate(InternalSpeakingUpdate),
VoicePacket(InternalVoicePacket),
RtcpPacket(InternalRtcpPacket),
ClientConnect(ClientConnect),
ClientDisconnect(ClientDisconnect),
DriverConnect(InternalConnect),
DriverReconnect(InternalConnect),
DriverDisconnect(InternalDisconnect),
DriverConnectFailed,
DriverReconnectFailed,
SsrcKnown(u32),
}

impl<'a> CoreContext {
Expand All @@ -125,18 +69,10 @@ impl<'a> CoreContext {
SpeakingUpdate(evt) => EventContext::SpeakingUpdate(SpeakingUpdateData::from(evt)),
VoicePacket(evt) => EventContext::VoicePacket(VoiceData::from(evt)),
RtcpPacket(evt) => EventContext::RtcpPacket(RtcpData::from(evt)),
#[allow(deprecated)]
ClientConnect(evt) => EventContext::ClientConnect(*evt),
ClientDisconnect(evt) => EventContext::ClientDisconnect(*evt),
DriverConnect(evt) => EventContext::DriverConnect(ConnectData::from(evt)),
DriverReconnect(evt) => EventContext::DriverReconnect(ConnectData::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),
}
}
}
Expand All @@ -152,18 +88,10 @@ impl EventContext<'_> {
SpeakingUpdate(_) => Some(CoreEvent::SpeakingUpdate),
VoicePacket(_) => Some(CoreEvent::VoicePacket),
RtcpPacket(_) => Some(CoreEvent::RtcpPacket),
#[allow(deprecated)]
ClientConnect(_) => Some(CoreEvent::ClientConnect),
ClientDisconnect(_) => Some(CoreEvent::ClientDisconnect),
DriverConnect(_) => Some(CoreEvent::DriverConnect),
DriverReconnect(_) => Some(CoreEvent::DriverReconnect),
DriverDisconnect(_) => Some(CoreEvent::DriverDisconnect),
#[allow(deprecated)]
DriverConnectFailed => Some(CoreEvent::DriverConnectFailed),
#[allow(deprecated)]
DriverReconnectFailed => Some(CoreEvent::DriverReconnectFailed),
#[allow(deprecated)]
SsrcKnown(_) => Some(CoreEvent::SsrcKnown),
_ => None,
}
}
Expand Down
59 changes: 19 additions & 40 deletions src/events/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,29 @@
/// Core events persist while the `action` in [`EventData`]
/// 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
/// [`VoiceData`]: super::context::data::VoiceData
/// [`SpeakingStateUpdate`]: Self::SpeakingStateUpdate
/// [`ClientDisconnect`]: Self::ClientDisconnect
/// [`VoicePacket`]: Self::VoicePacket
/// [`RtcpPacket`]: Self::RtcpPacket
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[non_exhaustive]
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.
///
/// Note: this will fire when a user starts speaking for the first time,
Expand All @@ -25,52 +44,12 @@ pub enum CoreEvent {
/// Fires on receipt of an RTCP packet, containing various call stats
/// such as latency reports.
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.
ClientDisconnect,
/// Fires when this driver successfully connects to a voice channel.
DriverConnect,
/// Fires when this driver successfully reconnects after a network error.
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.
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,
}

0 comments on commit e0ab49c

Please sign in to comment.