feat: remote mixer part 3

This commit is contained in:
Ahmet Kaan Gümüş 2025-05-20 00:59:34 +03:00
parent 0c187b166f
commit 50917c09d5
2 changed files with 175 additions and 140 deletions

View file

@ -54,31 +54,25 @@ pub async fn connect(
let (speaker_sender, speaker_receiver) = broadcast::channel(BUFFER_LENGTH);
let (speaker_stop_signal_sender, speaker_stop_signal_receiver) = oneshot::channel();
tokio::spawn(play(speaker_receiver, speaker_stop_signal_receiver));
let receive_voice_data_task = tokio::spawn(receive_voice_data(receive_stream, speaker_sender));
let send_voice_data_task = tokio::spawn(send_voice_data(
let receive_voice_data_task = tokio::spawn(receive_audio_data(receive_stream, speaker_sender));
let send_voice_data_task = tokio::spawn(send_audio_data(
send_stream,
microphone_sender_for_producing_receiver,
));
if let Err(err_val) = is_connection_started_signal.send(true) {
eprintln!(
"Error: Is Connection Started | Local Channel | Send | {}",
err_val
);
eprintln!("Error: Is Connection Started | Local | Send | {}", err_val);
}
if let Err(err_val) = connection_stop_signal_receiver.await {
eprintln!(
"Error: Connection Stop Signal | Local Channel | Receive | {}",
"Error: Connection Stop Signal | Local | Receive | {}",
err_val
);
}
if let Err(err_val) = speaker_stop_signal_sender.send(true) {
eprintln!(
"Error: Speaker Stop Signal | Local Channel | Send | {}",
err_val
);
eprintln!("Error: Speaker Stop Signal | Local | Send | {}", err_val);
}
println!("Connection Is Closing");
@ -91,7 +85,7 @@ pub async fn connect(
Ok(())
}
async fn send_voice_data(
async fn send_audio_data(
mut send_stream: SendStream,
microphone_sender_for_producing_receiver: Arc<broadcast::Sender<f32>>,
) {
@ -100,15 +94,12 @@ async fn send_voice_data(
match microphone_receiver.recv().await {
Ok(microphone_data) => {
if let Err(err_val) = send_stream.write_f32(microphone_data).await {
eprintln!("Error: Send Microphone Data | {}", err_val);
eprintln!("Error: Send Microphone Data | Remote | {}", err_val);
break;
}
}
Err(err_val) => {
eprintln!(
"Error: Receive from Microphone | Local Channel | {}",
err_val
);
eprintln!("Error: Receive from Microphone | Local | {}", err_val);
match err_val {
broadcast::error::RecvError::Closed => break,
broadcast::error::RecvError::Lagged(_) => {
@ -119,7 +110,7 @@ async fn send_voice_data(
}
}
}
async fn receive_voice_data(
async fn receive_audio_data(
mut receive_stream: ReceiveStream,
speaker_sender: broadcast::Sender<f32>,
) {
@ -127,12 +118,12 @@ async fn receive_voice_data(
match receive_stream.read_f32().await {
Ok(received_data) => {
if let Err(err_val) = speaker_sender.send(received_data) {
eprintln!("Error: Send to Speaker | Local Channel | {}", err_val);
eprintln!("Error: Send to Speaker | Local | {}", err_val);
break;
}
}
Err(err_val) => {
eprintln!("Error: Receive Data | {}", err_val);
eprintln!("Error: Receive Audio Data | Remote | {}", err_val);
break;
}
}