Give tungstenite types distinct names

This commit is contained in:
bitfl0wer 2023-11-19 21:15:10 +01:00
parent 50b86d4472
commit 9372e32edb
No known key found for this signature in database
GPG Key ID: 0ACD574FCF5226CF
5 changed files with 15 additions and 14 deletions

View File

@ -11,16 +11,17 @@ use super::GatewayMessage;
use crate::errors::GatewayError;
#[derive(Debug, Clone)]
pub struct WebSocketBackend;
pub struct TungsteniteBackend;
// These could be made into inherent associated types when that's stabilized
pub type WsSink = SplitSink<WebSocketStream<MaybeTlsStream<TcpStream>>, tungstenite::Message>;
pub type WsStream = SplitStream<WebSocketStream<MaybeTlsStream<TcpStream>>>;
pub type TungsteniteSink =
SplitSink<WebSocketStream<MaybeTlsStream<TcpStream>>, tungstenite::Message>;
pub type TungsteniteStream = SplitStream<WebSocketStream<MaybeTlsStream<TcpStream>>>;
impl WebSocketBackend {
impl TungsteniteBackend {
pub async fn connect(
websocket_url: &str,
) -> Result<(WsSink, WsStream), crate::errors::GatewayError> {
) -> Result<(TungsteniteSink, TungsteniteStream), crate::errors::GatewayError> {
let mut roots = rustls::RootCertStore::empty();
for cert in rustls_native_certs::load_native_certs().expect("could not load platform certs")
{

View File

@ -6,7 +6,7 @@ use tokio::task;
use self::event::Events;
use super::*;
use super::{WsSink, WsStream};
use super::{Sink, Stream};
use crate::types::{
self, AutoModerationRule, AutoModerationRuleUpdate, Channel, ChannelCreate, ChannelDelete,
ChannelUpdate, Guild, GuildRoleCreate, GuildRoleUpdate, JsonField, RoleObject, SourceUrlField,
@ -17,8 +17,8 @@ use crate::types::{
pub struct Gateway {
events: Arc<Mutex<Events>>,
heartbeat_handler: HeartbeatHandler,
websocket_send: Arc<Mutex<WsSink>>,
websocket_receive: WsStream,
websocket_send: Arc<Mutex<Sink>>,
websocket_receive: Stream,
kill_send: tokio::sync::broadcast::Sender<()>,
store: Arc<Mutex<HashMap<Snowflake, Arc<RwLock<ObservableObject>>>>>,
url: String,

View File

@ -14,7 +14,7 @@ use crate::types::{self, Composite};
pub struct GatewayHandle {
pub url: String,
pub events: Arc<Mutex<Events>>,
pub websocket_send: Arc<Mutex<WsSink>>,
pub websocket_send: Arc<Mutex<Sink>>,
/// Tells gateway tasks to close
pub(super) kill_send: tokio::sync::broadcast::Sender<()>,
pub(crate) store: Arc<Mutex<HashMap<Snowflake, Arc<RwLock<ObservableObject>>>>>,

View File

@ -27,7 +27,7 @@ pub(super) struct HeartbeatHandler {
impl HeartbeatHandler {
pub fn new(
heartbeat_interval: Duration,
websocket_tx: Arc<Mutex<WsSink>>,
websocket_tx: Arc<Mutex<Sink>>,
kill_rc: tokio::sync::broadcast::Receiver<()>,
) -> Self {
let (send, receive) = tokio::sync::mpsc::channel(32);
@ -49,7 +49,7 @@ impl HeartbeatHandler {
/// Can be killed by the kill broadcast;
/// If the websocket is closed, will die out next time it tries to send a heartbeat;
pub async fn heartbeat_task(
websocket_tx: Arc<Mutex<WsSink>>,
websocket_tx: Arc<Mutex<Sink>>,
heartbeat_interval: Duration,
mut receive: Receiver<HeartbeatThreadCommunication>,
mut kill_receive: tokio::sync::broadcast::Receiver<()>,

View File

@ -23,11 +23,11 @@ use std::sync::{Arc, RwLock};
use tokio::sync::Mutex;
#[cfg(not(target_arch = "wasm32"))]
pub type WsSink = backend_tungstenite::WsSink;
pub type Sink = backend_tungstenite::TungsteniteSink;
#[cfg(not(target_arch = "wasm32"))]
pub type WsStream = backend_tungstenite::WsStream;
pub type Stream = backend_tungstenite::TungsteniteStream;
#[cfg(not(target_arch = "wasm32"))]
pub type WebSocketBackend = backend_tungstenite::WebSocketBackend;
pub type WebSocketBackend = backend_tungstenite::TungsteniteBackend;
// Gateway opcodes
/// Opcode received when the server dispatches a [crate::types::WebSocketEvent]