aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/network/tcp.rs
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-10-13 23:59:16 +0200
committerGustav Sörnäs <gustav@sornas.net>2020-10-14 00:01:17 +0200
commit6693c994f1baa6fc08787ef47759f58834f6c3c0 (patch)
tree755a96b67c762cf38b18454d308c0ff047fd1208 /mumd/src/network/tcp.rs
parentccd7cbac5e8080240988b01cc9f2e64af9082f5d (diff)
downloadmum-6693c994f1baa6fc08787ef47759f58834f6c3c0.tar.gz
remove shared mutability of tcp sink
Co-authored-by: Eskil Queseth <eskilq@kth.se>
Diffstat (limited to 'mumd/src/network/tcp.rs')
-rw-r--r--mumd/src/network/tcp.rs18
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();
}
}