|
@@ -7,11 +7,11 @@ use mumble_protocol::voice::{Clientbound, Serverbound, VoicePacket};
|
|
|
use std::marker::PhantomData;
|
|
|
use std::sync::Arc;
|
|
|
use tokio::sync::mpsc;
|
|
|
-use tokio::sync::mpsc::{Receiver, Sender};
|
|
|
+use tokio::sync::mpsc::{UnboundedReceiver, Receiver, UnboundedSender, Sender};
|
|
|
use tokio::task::JoinHandle;
|
|
|
|
|
|
pub struct ClientWorker<C: ControlChannel, A: AudioChannel> {
|
|
|
- event_sender: Sender<ServerEvent>,
|
|
|
+ event_sender: UnboundedSender<ServerEvent>,
|
|
|
audio_channel_sender: Sender<A>,
|
|
|
task: JoinHandle<()>,
|
|
|
control_channel_type: PhantomData<C>,
|
|
@@ -39,10 +39,10 @@ impl<C: ControlChannel + 'static, A: AudioChannel + 'static> ClientWorker<C, A>
|
|
|
storage: Arc<Storage>,
|
|
|
control_channel: C,
|
|
|
config: Config,
|
|
|
- ) -> Result<(Self, Receiver<ClientEvent>), ConnectionSetupError> {
|
|
|
+ ) -> Result<(Self, UnboundedReceiver<ClientEvent>), ConnectionSetupError> {
|
|
|
let control_channel = Arc::new(control_channel);
|
|
|
- let (event_sender, event_receiver) = mpsc::channel(1);
|
|
|
- let (server_event_sender, server_event_receiver) = mpsc::channel(1);
|
|
|
+ let (event_sender, event_receiver) = mpsc::unbounded_channel();
|
|
|
+ let (server_event_sender, server_event_receiver) = mpsc::unbounded_channel();
|
|
|
let (audio_sender, audio_receiver) = mpsc::channel(1);
|
|
|
let handler: Handler<C, A> = Handler::new(
|
|
|
storage,
|
|
@@ -69,7 +69,7 @@ impl<C: ControlChannel + 'static, A: AudioChannel + 'static> ClientWorker<C, A>
|
|
|
}
|
|
|
|
|
|
pub async fn send_event(&self, event: ServerEvent) {
|
|
|
- if self.event_sender.send(event).await.is_err() {
|
|
|
+ if self.event_sender.send(event).is_err() {
|
|
|
todo!()
|
|
|
}
|
|
|
}
|
|
@@ -83,7 +83,7 @@ impl<C: ControlChannel + 'static, A: AudioChannel + 'static> ClientWorker<C, A>
|
|
|
async fn run_handler_loop(
|
|
|
mut handler: Handler<C, A>,
|
|
|
control_channel: Arc<C>,
|
|
|
- event_receiver: Receiver<ServerEvent>,
|
|
|
+ event_receiver: UnboundedReceiver<ServerEvent>,
|
|
|
channel_receiver: Receiver<A>,
|
|
|
) -> JoinHandle<()> {
|
|
|
tokio::spawn(async move {
|
|
@@ -109,7 +109,7 @@ impl<C: ControlChannel + 'static, A: AudioChannel + 'static> ClientWorker<C, A>
|
|
|
async fn handler_loop(
|
|
|
handler: &mut Handler<C, A>,
|
|
|
control_channel: Arc<C>,
|
|
|
- mut event_receiver: Receiver<ServerEvent>,
|
|
|
+ mut event_receiver: UnboundedReceiver<ServerEvent>,
|
|
|
mut channel_receiver: Receiver<A>,
|
|
|
) -> Result<(), HandlerError> {
|
|
|
let mut audio_channel: Option<Arc<A>> = None;
|