diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66d1935..54adb05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,9 +56,6 @@ jobs: - name: gateway only features: serenity-rustls dont-test: true - - name: legacy tokio - features: serenity-rustls-tokio-02 driver-tokio-02 - dont-test: true steps: - name: Checkout sources diff --git a/Cargo.toml b/Cargo.toml index d6fda4d..b6e0441 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,13 +30,6 @@ features = ["tokio-runtime"] optional = true version = "0.14" -[dependencies.async-tungstenite-compat] -package = "async-tungstenite" -default-features = false -features = ["tokio-runtime"] -optional = true -version = "0.9" - [dependencies.audiopus] optional = true version = "0.2" @@ -97,12 +90,6 @@ optional = true version = "1.0" default-features = false -[dependencies.tokio-compat] -optional = true -package = "tokio" -version = "0.2" -default-features = false - [dependencies.twilight-gateway] optional = true version = ">=0.9.0, <0.11.0" @@ -195,32 +182,6 @@ serenity-deps = ["async-trait"] rustls-marker = [] native-marker = [] -# Tokio 0.2 Compatibility features -# These should probably be dropped around the same time as serenity drop them. -rustls-tokio-02 = ["async-tungstenite-compat/tokio-rustls", "rustls-marker", "tokio-02-marker"] -native-tokio-02 = ["async-tungstenite-compat/tokio-native-tls", "native-marker", "tokio-02-marker"] -serenity-rustls-tokio-02 = ["serenity/rustls_tokio_0_2_backend", "rustls-tokio-02", "gateway-tokio-02", "serenity-deps"] -serenity-native-tokio-02 = ["serenity/native_tls_tokio_0_2_backend", "native-tokio-02", "gateway-tokio-02", "serenity-deps"] -gateway-tokio-02 = [ - "gateway-core", - "tokio-02-marker", - "tokio-compat/sync", -] -driver-tokio-02 = [ - "async-tungstenite-compat", - "driver-core", - "tokio-02-marker", - "tokio-compat/fs", - "tokio-compat/io-util", - "tokio-compat/macros", - "tokio-compat/net", - "tokio-compat/process", - "tokio-compat/rt-core", - "tokio-compat/sync", - "tokio-compat/time", -] -tokio-02-marker = [] - # Behaviour altering features. youtube-dlc = [] yt-dlp = [] diff --git a/Makefile.toml b/Makefile.toml index 6ed76d1..4199101 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -23,13 +23,8 @@ args = ["build", "--no-default-features", "--features", "driver,rustls"] command = "cargo" dependencies = ["format"] -[tasks.build-old-tokio] -command = "cargo" -args = ["build", "--no-default-features", "--features", "serenity-rustls-tokio-02,driver-tokio-02"] -dependencies = ["format"] - [tasks.build-variants] -dependencies = ["build", "build-gateway", "build-driver", "build-old-tokio"] +dependencies = ["build", "build-gateway", "build-driver"] [tasks.clippy] args = ["clippy", "--features", "full-doc", "--", "-D", "warnings"] diff --git a/src/driver/connection/error.rs b/src/driver/connection/error.rs index 2dd01bd..0dc23d3 100644 --- a/src/driver/connection/error.rs +++ b/src/driver/connection/error.rs @@ -7,10 +7,7 @@ use crate::{ use flume::SendError; use serde_json::Error as JsonError; use std::{error::Error as StdError, fmt, io::Error as IoError}; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::time::error::Elapsed; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::time::Elapsed; use xsalsa20poly1305::aead::Error as CryptoError; /// Errors encountered while connecting to a Discord voice server over the driver. diff --git a/src/driver/connection/mod.rs b/src/driver/connection/mod.rs index 1cef559..76b93a1 100644 --- a/src/driver/connection/mod.rs +++ b/src/driver/connection/mod.rs @@ -19,10 +19,7 @@ use discortp::discord::{IpDiscoveryPacket, IpDiscoveryType, MutableIpDiscoveryPa use error::{Error, Result}; use flume::Sender; use std::{net::IpAddr, str::FromStr, sync::Arc}; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{net::UdpSocket, spawn, time::timeout}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{net::UdpSocket, spawn, time::timeout}; use tracing::{debug, info, instrument}; use url::Url; use xsalsa20poly1305::{aead::NewAead, XSalsa20Poly1305 as Cipher}; @@ -115,11 +112,7 @@ impl Connection { return Err(Error::CryptoModeUnavailable); } - #[cfg(not(feature = "tokio-02-marker"))] let udp = UdpSocket::bind("0.0.0.0:0").await?; - #[cfg(feature = "tokio-02-marker")] - let mut udp = UdpSocket::bind("0.0.0.0:0").await?; - udp.connect((ready.ip, ready.port)).await?; // Follow Discord's IP Discovery procedures, in case NAT tunnelling is needed. @@ -184,14 +177,11 @@ impl Connection { let (udp_sender_msg_tx, udp_sender_msg_rx) = flume::unbounded(); let (udp_receiver_msg_tx, udp_receiver_msg_rx) = flume::unbounded(); - #[cfg(not(feature = "tokio-02-marker"))] let (udp_rx, udp_tx) = { let udp_rx = Arc::new(udp); let udp_tx = Arc::clone(&udp_rx); (udp_rx, udp_tx) }; - #[cfg(feature = "tokio-02-marker")] - let (udp_rx, udp_tx) = udp.split(); let ssrc = ready.ssrc; diff --git a/src/driver/tasks/message/mod.rs b/src/driver/tasks/message/mod.rs index b3eae0b..54b27ba 100644 --- a/src/driver/tasks/message/mod.rs +++ b/src/driver/tasks/message/mod.rs @@ -11,10 +11,7 @@ mod ws; pub use self::{core::*, disposal::*, events::*, mixer::*, udp_rx::*, udp_tx::*, ws::*}; use flume::Sender; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::spawn; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::spawn; use tracing::trace; #[derive(Clone, Debug)] diff --git a/src/driver/tasks/mixer.rs b/src/driver/tasks/mixer.rs index 9db40cc..3bca664 100644 --- a/src/driver/tasks/mixer.rs +++ b/src/driver/tasks/mixer.rs @@ -19,10 +19,7 @@ use flume::{Receiver, Sender, TryRecvError}; use rand::random; use spin_sleep::SpinSleeper; use std::time::Instant; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::runtime::Handle; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::runtime::Handle; use tracing::{debug, error, instrument}; use xsalsa20poly1305::TAG_SIZE; diff --git a/src/driver/tasks/mod.rs b/src/driver/tasks/mod.rs index ee56007..efe58ce 100644 --- a/src/driver/tasks/mod.rs +++ b/src/driver/tasks/mod.rs @@ -23,10 +23,7 @@ use crate::{ }; use flume::{Receiver, RecvError, Sender}; use message::*; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{runtime::Handle, spawn, time::sleep as tsleep}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{runtime::Handle, spawn, time::delay_for as tsleep}; use tracing::{debug, instrument, trace}; pub(crate) fn start(config: Config, rx: Receiver, tx: Sender) { diff --git a/src/driver/tasks/udp_rx.rs b/src/driver/tasks/udp_rx.rs index 96b1f72..c6b688e 100644 --- a/src/driver/tasks/udp_rx.rs +++ b/src/driver/tasks/udp_rx.rs @@ -22,10 +22,7 @@ use discortp::{ }; use flume::Receiver; use std::{collections::HashMap, sync::Arc}; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{net::UdpSocket, select}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{net::udp::RecvHalf, select}; use tracing::{error, instrument, trace, warn}; use xsalsa20poly1305::XSalsa20Poly1305 as Cipher; @@ -241,10 +238,7 @@ struct UdpRx { packet_buffer: [u8; VOICE_PACKET_MAX], rx: Receiver, - #[cfg(not(feature = "tokio-02-marker"))] udp_socket: Arc, - #[cfg(feature = "tokio-02-marker")] - udp_socket: RecvHalf, } impl UdpRx { @@ -396,7 +390,6 @@ impl UdpRx { } } -#[cfg(not(feature = "tokio-02-marker"))] #[instrument(skip(interconnect, rx, cipher))] pub(crate) async fn runner( mut interconnect: Interconnect, @@ -421,31 +414,6 @@ pub(crate) async fn runner( trace!("UDP receive handle stopped."); } -#[cfg(feature = "tokio-02-marker")] -#[instrument(skip(interconnect, rx, cipher))] -pub(crate) async fn runner( - mut interconnect: Interconnect, - rx: Receiver, - cipher: Cipher, - config: Config, - udp_socket: RecvHalf, -) { - trace!("UDP receive handle started."); - - let mut state = UdpRx { - cipher, - decoder_map: Default::default(), - config, - packet_buffer: [0u8; VOICE_PACKET_MAX], - rx, - udp_socket, - }; - - state.run(&mut interconnect).await; - - trace!("UDP receive handle stopped."); -} - #[inline] fn rtp_valid(packet: RtpPacket<'_>) -> bool { packet.get_version() == RTP_VERSION && packet.get_payload_type() == RTP_PROFILE_TYPE diff --git a/src/driver/tasks/udp_tx.rs b/src/driver/tasks/udp_tx.rs index 99e63d0..8e482d4 100644 --- a/src/driver/tasks/udp_tx.rs +++ b/src/driver/tasks/udp_tx.rs @@ -3,26 +3,17 @@ use crate::constants::*; use discortp::discord::MutableKeepalivePacket; use flume::Receiver; use std::sync::Arc; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{ net::UdpSocket, time::{timeout_at, Instant}, }; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{ - net::udp::SendHalf, - time::{timeout_at, Instant}, -}; use tracing::{error, instrument, trace}; struct UdpTx { ssrc: u32, rx: Receiver, - #[cfg(not(feature = "tokio-02-marker"))] udp_tx: Arc, - #[cfg(feature = "tokio-02-marker")] - udp_tx: SendHalf, } impl UdpTx { @@ -62,7 +53,6 @@ impl UdpTx { } } -#[cfg(not(feature = "tokio-02-marker"))] #[instrument(skip(udp_msg_rx))] pub(crate) async fn runner(udp_msg_rx: Receiver, ssrc: u32, udp_tx: Arc) { trace!("UDP transmit handle started."); @@ -77,19 +67,3 @@ pub(crate) async fn runner(udp_msg_rx: Receiver, ssrc: u32, udp_tx trace!("UDP transmit handle stopped."); } - -#[cfg(feature = "tokio-02-marker")] -#[instrument(skip(udp_msg_rx))] -pub(crate) async fn runner(udp_msg_rx: Receiver, ssrc: u32, udp_tx: SendHalf) { - trace!("UDP transmit handle started."); - - let mut txer = UdpTx { - ssrc, - rx: udp_msg_rx, - udp_tx, - }; - - txer.run().await; - - trace!("UDP transmit handle stopped."); -} diff --git a/src/driver/tasks/ws.rs b/src/driver/tasks/ws.rs index 89b1eb0..65d2763 100644 --- a/src/driver/tasks/ws.rs +++ b/src/driver/tasks/ws.rs @@ -11,23 +11,14 @@ use crate::{ ws::{Error as WsError, ReceiverExt, SenderExt, WsStream}, ConnectionInfo, }; -#[cfg(not(feature = "tokio-02-marker"))] use async_tungstenite::tungstenite::protocol::frame::coding::CloseCode; -#[cfg(feature = "tokio-02-marker")] -use async_tungstenite_compat::tungstenite::protocol::frame::coding::CloseCode; use flume::Receiver; use rand::random; use std::time::Duration; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{ select, time::{sleep_until, Instant}, }; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{ - select, - time::{delay_until as sleep_until, Instant}, -}; use tracing::{debug, info, instrument, trace, warn}; struct AuxNetwork { diff --git a/src/events/context/data/disconnect.rs b/src/events/context/data/disconnect.rs index e7956d1..89e49bc 100644 --- a/src/events/context/data/disconnect.rs +++ b/src/events/context/data/disconnect.rs @@ -4,10 +4,7 @@ use crate::{ model::{CloseCode as VoiceCloseCode, FromPrimitive}, ws::Error as WsError, }; -#[cfg(not(feature = "tokio-02-marker"))] use async_tungstenite::tungstenite::protocol::frame::coding::CloseCode; -#[cfg(feature = "tokio-02-marker")] -use async_tungstenite_compat::tungstenite::protocol::frame::coding::CloseCode; /// Voice connection details gathered at termination or failure. /// diff --git a/src/input/child.rs b/src/input/child.rs index 1a2ccb0..5f92e12 100644 --- a/src/input/child.rs +++ b/src/input/child.rs @@ -4,10 +4,7 @@ use std::{ mem, process::Child, }; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::runtime::Handle; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::runtime::Handle; use tracing::debug; /// Handle for a child process which ensures that any subprocesses are properly closed diff --git a/src/input/dca.rs b/src/input/dca.rs index 3343b44..ee2e14f 100644 --- a/src/input/dca.rs +++ b/src/input/dca.rs @@ -1,10 +1,7 @@ use super::{codec::OpusDecoderState, error::DcaError, Codec, Container, Input, Metadata, Reader}; use serde::Deserialize; use std::{ffi::OsStr, mem}; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{fs::File as TokioFile, io::AsyncReadExt}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{fs::File as TokioFile, io::AsyncReadExt}; /// Creates a streamed audio source from a DCA file. /// Currently only accepts the [DCA1 format](https://github.com/bwmarrin/dca). diff --git a/src/input/ffmpeg_src.rs b/src/input/ffmpeg_src.rs index 1ea14f1..a8e73ca 100644 --- a/src/input/ffmpeg_src.rs +++ b/src/input/ffmpeg_src.rs @@ -11,10 +11,7 @@ use std::{ ffi::OsStr, process::{Command, Stdio}, }; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::process::Command as TokioCommand; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::process::Command as TokioCommand; use tracing::debug; /// Opens an audio file through `ffmpeg` and creates an audio source. diff --git a/src/input/mod.rs b/src/input/mod.rs index ef0c509..6a32b48 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -58,10 +58,7 @@ use audiopus::coder::GenericCtl; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use cached::OpusCompressor; use error::{Error, Result}; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::runtime::Handle; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::runtime::Handle; use std::{ convert::TryFrom, diff --git a/src/input/ytdl_src.rs b/src/input/ytdl_src.rs index 1a389af..e929780 100644 --- a/src/input/ytdl_src.rs +++ b/src/input/ytdl_src.rs @@ -11,10 +11,7 @@ use std::{ io::{BufRead, BufReader, Read}, process::{Command, Stdio}, }; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::{process::Command as TokioCommand, task}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::{process::Command as TokioCommand, task}; use tracing::trace; const YOUTUBE_DL_COMMAND: &str = if cfg!(feature = "youtube-dlc") { diff --git a/src/join.rs b/src/join.rs index c8a88f4..76a4e93 100644 --- a/src/join.rs +++ b/src/join.rs @@ -16,10 +16,7 @@ use core::{ }; use flume::r#async::RecvFut; use pin_project::pin_project; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::time::{self, Timeout}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::time::{self, Timeout}; #[cfg(feature = "driver-core")] /// Future for a call to [`Call::join`]. diff --git a/src/manager.rs b/src/manager.rs index 1733e1e..819a62d 100644 --- a/src/manager.rs +++ b/src/manager.rs @@ -22,10 +22,7 @@ use serenity::{ }, }; use std::sync::Arc; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::sync::Mutex; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::sync::Mutex; use tracing::debug; #[cfg(feature = "twilight")] use twilight_gateway::Cluster; diff --git a/src/tracks/handle.rs b/src/tracks/handle.rs index 6d08ce4..173c7c8 100644 --- a/src/tracks/handle.rs +++ b/src/tracks/handle.rs @@ -5,10 +5,7 @@ use crate::{ }; use flume::Sender; use std::{fmt, sync::Arc, time::Duration}; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::sync::RwLock; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::sync::RwLock; use typemap_rev::TypeMap; use uuid::Uuid; diff --git a/src/ws.rs b/src/ws.rs index 80d4379..88e47be 100644 --- a/src/ws.rs +++ b/src/ws.rs @@ -1,26 +1,15 @@ use crate::model::Event; use async_trait::async_trait; -#[cfg(not(feature = "tokio-02-marker"))] use async_tungstenite::{ self as tungstenite, tokio::ConnectStream, tungstenite::{error::Error as TungsteniteError, protocol::CloseFrame, Message}, WebSocketStream, }; -#[cfg(feature = "tokio-02-marker")] -use async_tungstenite_compat::{ - self as tungstenite, - tokio::ConnectStream, - tungstenite::{error::Error as TungsteniteError, protocol::CloseFrame, Message}, - WebSocketStream, -}; use futures::{SinkExt, StreamExt, TryStreamExt}; use serde_json::Error as JsonError; -#[cfg(not(feature = "tokio-02-marker"))] use tokio::time::{timeout, Duration}; -#[cfg(feature = "tokio-02-marker")] -use tokio_compat::time::{timeout, Duration}; use tracing::instrument; pub type WsStream = WebSocketStream;