From 669f8eba2b152db2da859d92873fcd25935f0e31 Mon Sep 17 00:00:00 2001 From: jakka Date: Fri, 10 Oct 2025 12:18:32 +0300 Subject: moving to tokio runtime, better async handling --- src/main.rs | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index d38d0d3..cb5ff66 100644 --- a/src/main.rs +++ b/src/main.rs @@ -89,33 +89,32 @@ fn main() -> Result<()> { ctrlc::set_handler(move || { r.store(false, Ordering::SeqCst); })?; + let runtime = tokio::runtime::Builder::new_multi_thread().build()?; - smol::block_on(async move { - let path = args.get_one::("db"); - let db = db::init_db(path).await?; + let path = args.get_one::("db"); + let db = runtime.block_on(async { db::init_db(path).await })?; - if path.is_none() && !args.get_flag("clean") && !args.get_flag("doit") { - let count = db::get_toencode_number(&db.connect()?).await?; - println!("Files to reencode:\t{}", style(count).green()); - return Ok(()); - } + if path.is_none() && !args.get_flag("clean") && !args.get_flag("doit") { + let count = runtime.block_on(async { db::get_toencode_number(&db.connect()?).await })?; + println!("Files to reencode:\t{}", style(count).green()); + return Ok(()); + } - if let Some(realpath) = path { - let hanlder = running.clone(); - files::index_files_recursively(realpath, &db.connect()?, hanlder).await?; - } + if let Some(realpath) = path { + let hanlder = running.clone(); + runtime.block_on(async { files::index_files_recursively(realpath, &db, hanlder).await })?; + } - if args.get_flag("clean") { - let handler = running.clone(); - files::clean_files(&db.connect()?, handler).await?; - } + if args.get_flag("clean") { + let handler = running.clone(); + runtime.block_on(async { files::clean_files(&db.connect()?, handler).await })?; + } - if args.get_flag("doit") { - let hanlder = running.clone(); - let threads = *args.get_one::("threads").unwrap(); - files::reencode_files(&db.connect()?, hanlder, threads).await?; - } + if args.get_flag("doit") { + let hanlder = running.clone(); + let threads = *args.get_one::("threads").unwrap(); + files::reencode_files(&db, hanlder, threads, runtime); + } - Ok::<(), anyhow::Error>(()) - }) + Ok::<(), anyhow::Error>(()) } -- cgit v1.3.1