diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-10-13 23:59:16 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-10-14 00:01:17 +0200 |
| commit | 6693c994f1baa6fc08787ef47759f58834f6c3c0 (patch) | |
| tree | 755a96b67c762cf38b18454d308c0ff047fd1208 /mumd | |
| parent | ccd7cbac5e8080240988b01cc9f2e64af9082f5d (diff) | |
| download | mum-6693c994f1baa6fc08787ef47759f58834f6c3c0.tar.gz | |
remove shared mutability of tcp sink
Co-authored-by: Eskil Queseth <eskilq@kth.se>
Diffstat (limited to 'mumd')
| -rw-r--r-- | mumd/src/network/tcp.rs | 18 |
1 files 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<ClientCryptState>, packet_receiver: mpsc::UnboundedReceiver<ControlPacket<Serverbound>>, ) { - 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<Mutex<TcpSender>>, 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<ControlPacket<Serverbound>>, @@ -93,11 +89,11 @@ async fn send_pings(packet_sender: mpsc::UnboundedSender<ControlPacket<Serverbou } } -async fn send_packets(sink: Arc<Mutex<TcpSender>>, +async fn send_packets(mut sink: TcpSender, mut packet_receiver: mpsc::UnboundedReceiver<ControlPacket<Serverbound>>) { while let Some(packet) = packet_receiver.recv().await { - sink.lock().unwrap().send(packet).await.unwrap(); + sink.send(packet).await.unwrap(); } } |
