From 6693c994f1baa6fc08787ef47759f58834f6c3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 13 Oct 2020 23:59:16 +0200 Subject: remove shared mutability of tcp sink Co-authored-by: Eskil Queseth --- mumd/src/network/tcp.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index f86447b..6f60b63 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -1,5 +1,4 @@ use crate::state::State; -use crate::command::Command; use log::*; use futures::channel::oneshot; @@ -32,17 +31,15 @@ pub async fn handle( crypt_state_sender: oneshot::Sender, packet_receiver: mpsc::UnboundedReceiver>, ) { - let (sink, stream) = connect(server_addr, server_host, accept_invalid_cert).await; - let sink = Arc::new(Mutex::new(sink)); - + let (mut sink, stream) = connect(server_addr, server_host, accept_invalid_cert).await; // Handshake (omitting `Version` message for brevity) - authenticate(Arc::clone(&sink), state.lock().unwrap().username().to_string()).await; + authenticate(&mut sink, state.lock().unwrap().username().to_string()).await; info!("Logging in..."); join!( - send_pings(Arc::clone(&sink), 10), + send_pings(state.lock().unwrap().packet_sender(), 10), listen(state, stream, crypt_state_sender), send_packets(sink, packet_receiver), ); @@ -74,12 +71,11 @@ async fn connect( ClientControlCodec::new().framed(tls_stream).split() } -//TODO &mut sink? -async fn authenticate(sink: Arc>, username: String) { +async fn authenticate(sink: &mut TcpSender, username: String) { let mut msg = msgs::Authenticate::new(); msg.set_username(username); msg.set_opus(true); - sink.lock().unwrap().send(msg.into()).await.unwrap(); + sink.send(msg.into()).await.unwrap(); } async fn send_pings(packet_sender: mpsc::UnboundedSender>, @@ -93,11 +89,11 @@ async fn send_pings(packet_sender: mpsc::UnboundedSender>, +async fn send_packets(mut sink: TcpSender, mut packet_receiver: mpsc::UnboundedReceiver>) { while let Some(packet) = packet_receiver.recv().await { - sink.lock().unwrap().send(packet).await.unwrap(); + sink.send(packet).await.unwrap(); } } -- cgit v1.2.1