diff options
| author | Eskil Q <eskilq@kth.se> | 2021-01-02 11:17:49 +0100 |
|---|---|---|
| committer | Eskil Q <eskilq@kth.se> | 2021-01-02 11:17:49 +0100 |
| commit | 76a3f1ea5489048e6d32982119429daa05dde3e0 (patch) | |
| tree | 856e08e0ff7f5335e96cfd6752bc55fcb512ea8f /mumd/src/network/udp.rs | |
| parent | 08e64c1b9d622026bcbe1f80d2d5d64dd80af8f9 (diff) | |
| download | mum-76a3f1ea5489048e6d32982119429daa05dde3e0.tar.gz | |
make audio sending use streams
Diffstat (limited to 'mumd/src/network/udp.rs')
| -rw-r--r-- | mumd/src/network/udp.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/mumd/src/network/udp.rs b/mumd/src/network/udp.rs index b592a60..d412d55 100644 --- a/mumd/src/network/udp.rs +++ b/mumd/src/network/udp.rs @@ -3,7 +3,7 @@ use crate::state::{State, StatePhase}; use log::*; use bytes::Bytes; -use futures::{join, pin_mut, select, FutureExt, SinkExt, StreamExt}; +use futures::{join, pin_mut, select, FutureExt, SinkExt, StreamExt, Stream}; use futures_util::stream::{SplitSink, SplitStream}; use mumble_protocol::crypt::ClientCryptState; use mumble_protocol::ping::{PingPacket, PongPacket}; @@ -54,7 +54,7 @@ pub async fn handle( Arc::clone(&sink), connection_info.socket_addr, phase_watcher, - &mut receiver + &mut *receiver ), new_crypt_state(&mut crypt_state_receiver, sink, source) ); @@ -198,8 +198,9 @@ async fn send_voice( sink: Arc<Mutex<UdpSender>>, server_addr: SocketAddr, mut phase_watcher: watch::Receiver<StatePhase>, - receiver: &mut mpsc::Receiver<VoicePacketPayload>, + receiver: &mut (dyn Stream<Item = Vec<u8>> + Unpin), ) { + pin_mut!(receiver); let (tx, rx) = oneshot::channel(); let phase_transition_block = async { loop { @@ -216,7 +217,7 @@ async fn send_voice( pin_mut!(rx); let mut count = 0; loop { - let packet_recv = receiver.recv().fuse(); + let packet_recv = receiver.next().fuse(); pin_mut!(packet_recv); let exitor = select! { data = packet_recv => Some(data), @@ -236,7 +237,7 @@ async fn send_voice( target: 0, // normal speech session_id: (), // unused for server-bound packets seq_num: count, - payload, + payload: VoicePacketPayload::Opus(payload.into(), false), position_info: None, }; count += 1; |
