Use smol async for daemon and daemon-user

This commit is contained in:
Luke D. Jones
2022-06-06 14:20:34 +12:00
parent d4b2d2f403
commit de43a37e9e
6 changed files with 56 additions and 112 deletions

View File

@@ -24,9 +24,8 @@ rog_supported = { path = "../rog-supported" }
rog_profiles = { path = "../rog-profiles" }
rog_dbus = { path = "../rog-dbus" }
async-executor = "1.4.1"
async-trait = "^0.1"
futures = { version = "0.3.19", features = ["executor", "thread-pool"] }
smol = "^1.2"
rusb = "^0.9"
udev = "^0.6"

View File

@@ -5,9 +5,9 @@ use std::sync::{Arc, Mutex};
use std::time::Duration;
use ::zbus::Connection;
use futures::executor::ThreadPool;
use log::LevelFilter;
use log::{error, info, warn};
use smol::Executor;
use daemon::ctrl_anime::config::AnimeConfig;
use daemon::ctrl_anime::zbus::CtrlAnimeZbus;
@@ -61,14 +61,14 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
info!(" rog-profiles v{}", rog_profiles::VERSION);
info!("rog-supported v{}", rog_supported::VERSION);
let mut pool = ThreadPool::new()?;
let mut executor = Executor::new();
futures::executor::block_on(start_daemon(&mut pool))?;
smol::block_on(start_daemon(&mut executor))?;
Ok(())
}
/// The actual main loop for the daemon
async fn start_daemon(thread_pool: &mut ThreadPool) -> Result<(), Box<dyn Error>> {
async fn start_daemon(executor: &mut Executor<'_>) -> Result<(), Box<dyn Error>> {
let supported = SupportedFunctions::get_supported();
print_board_info();
println!("{}", serde_json::to_string_pretty(&supported)?);
@@ -140,9 +140,11 @@ async fn start_daemon(thread_pool: &mut ThreadPool) -> Result<(), Box<dyn Error>
zbus.add_to_server(&mut connection).await;
let task = CtrlAnimeTask::new(inner);
thread_pool.spawn_ok(async move {
task.do_task().await.ok();
});
executor
.spawn(async move {
task.do_task().await.ok();
})
.detach();
}
Err(err) => {
error!("AniMe control: {}", err);
@@ -165,9 +167,11 @@ async fn start_daemon(thread_pool: &mut ThreadPool) -> Result<(), Box<dyn Error>
.await;
let task = CtrlKbdLedTask::new(inner);
thread_pool.spawn_ok(async move {
task.do_task().await.ok();
});
executor
.spawn(async move {
task.do_task().await.ok();
})
.detach();
}
Err(err) => {
error!("Keyboard control: {}", err);