From b15e010a6bebc7b7c6b8afb1b51f2673d0695e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 5 Jan 2021 20:02:32 +0100 Subject: tokio mutex --- mumd/src/audio.rs | 6 +++--- mumd/src/network/tcp.rs | 5 +++-- mumd/src/network/udp.rs | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 4f9b73c..3f03e61 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -76,7 +76,7 @@ pub struct Audio { _output_stream: cpal::Stream, _input_stream: cpal::Stream, - input_channel_receiver: Arc> + Unpin>>>, + input_channel_receiver: Arc> + Unpin>>>, input_volume_sender: watch::Sender, output_volume_sender: watch::Sender, @@ -227,7 +227,7 @@ impl Audio { _output_stream: output_stream, _input_stream: input_stream, input_volume_sender, - input_channel_receiver: Arc::new(Mutex::new(Box::new(opus_stream))), + input_channel_receiver: Arc::new(tokio::sync::Mutex::new(Box::new(opus_stream))), client_streams, sounds: HashMap::new(), output_volume_sender, @@ -337,7 +337,7 @@ impl Audio { } } - pub fn input_receiver(&self) -> Arc> + Unpin>>> { + pub fn input_receiver(&self) -> Arc> + Unpin>>> { Arc::clone(&self.input_channel_receiver) } diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index f767446..717b195 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -184,7 +184,7 @@ async fn send_packets( async fn send_voice( packet_sender: mpsc::UnboundedSender>, - receiver: Arc> + Unpin)>>>, + receiver: Arc> + Unpin)>>>, phase_watcher: watch::Receiver, ) { let inner_phase_watcher = phase_watcher.clone(); @@ -196,7 +196,7 @@ async fn send_voice( || async { packet_sender.send(receiver .lock() - .unwrap() + .await .next() .await .unwrap() @@ -208,6 +208,7 @@ async fn send_voice( || async {}, inner_phase_watcher.clone(), ).await; + debug!("Stopped sending TCP voice"); Some(Some(())) }, |_| async {}, diff --git a/mumd/src/network/udp.rs b/mumd/src/network/udp.rs index 9435e94..5e725cd 100644 --- a/mumd/src/network/udp.rs +++ b/mumd/src/network/udp.rs @@ -228,7 +228,7 @@ async fn send_voice( sink: Arc>, server_addr: SocketAddr, phase_watcher: watch::Receiver, - receiver: Arc> + Unpin)>>>, + receiver: Arc> + Unpin)>>>, ) { let inner_phase_watcher = phase_watcher.clone(); run_until( @@ -237,7 +237,9 @@ async fn send_voice( run_until( |phase| !matches!(phase, StatePhase::Connected(VoiceStreamType::UDP)), || async { - sink.lock().unwrap().send((receiver.lock().unwrap().next().await.unwrap(), server_addr)).await.unwrap(); + debug!("Sending UDP audio"); + sink.lock().unwrap().send((receiver.lock().await.next().await.unwrap(), server_addr)).await.unwrap(); + debug!("Sent UDP audio"); Some(Some(())) }, |_| async {}, -- cgit v1.2.1