feat: now pwsp-daemon main loop is separated into commands_loop and player_loop

This commit is contained in:
2026-01-02 02:10:58 +03:00
parent cc3bec0746
commit 3672d6f43e
+36 -2
View File
@@ -1,5 +1,8 @@
use pwsp::{ use pwsp::{
types::socket::{Request, Response}, types::{
audio_player::PlayerState,
socket::{Request, Response},
},
utils::{ utils::{
commands::parse_command, commands::parse_command,
daemon::{ daemon::{
@@ -9,10 +12,11 @@ use pwsp::{
pipewire::create_virtual_mic, pipewire::create_virtual_mic,
}, },
}; };
use std::{error::Error, fs}; use std::{error::Error, fs, time::Duration};
use tokio::{ use tokio::{
io::{AsyncReadExt, AsyncWriteExt}, io::{AsyncReadExt, AsyncWriteExt},
net::UnixListener, net::UnixListener,
time::sleep,
}; };
#[tokio::main] #[tokio::main]
@@ -44,6 +48,32 @@ async fn main() -> Result<(), Box<dyn Error>> {
socket_path.to_str().unwrap_or_default() socket_path.to_str().unwrap_or_default()
); );
let commands_loop_handle = tokio::spawn(async {
commands_loop(listener).await.ok();
});
let player_loop_handle = tokio::spawn(async {
player_loop().await;
});
loop {
if commands_loop_handle.is_finished() {
eprint!("Commands loop was finished, stopping program...");
player_loop_handle.abort();
break;
}
if player_loop_handle.is_finished() {
eprint!("Audio Player loop was finished, stopping program...");
commands_loop_handle.abort();
break;
}
}
Ok(())
}
async fn commands_loop(listener: UnixListener) -> Result<(), Box<dyn Error>> {
loop { loop {
let (mut stream, _addr) = listener.accept().await?; let (mut stream, _addr) = listener.accept().await?;
@@ -94,3 +124,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
}); });
} }
} }
async fn player_loop() {
loop {}
}