refactor: update AppHandle usage to use Arc<AppHandle> for improved memory management (#4491)
* refactor: update AppHandle usage to use Arc<AppHandle> for improved memory management * fix: clippy ci * fix: ensure default_latency_test is safely accessed with non-null assertion
This commit is contained in:
@@ -1,22 +1,63 @@
|
||||
#[cfg(feature = "tokio-trace")]
|
||||
use std::any::type_name;
|
||||
use std::future::Future;
|
||||
#[cfg(feature = "tokio-trace")]
|
||||
use std::panic::Location;
|
||||
use tauri::{async_runtime, async_runtime::JoinHandle};
|
||||
|
||||
pub struct AsyncHandler;
|
||||
|
||||
impl AsyncHandler {
|
||||
#[track_caller]
|
||||
pub fn spawn<F, Fut>(f: F) -> JoinHandle<()>
|
||||
where
|
||||
F: FnOnce() -> Fut + Send + 'static,
|
||||
Fut: Future<Output = ()> + Send + 'static,
|
||||
{
|
||||
#[cfg(feature = "tokio-trace")]
|
||||
Self::log_task_info(&f);
|
||||
async_runtime::spawn(f())
|
||||
}
|
||||
|
||||
#[track_caller]
|
||||
pub fn spawn_blocking<T, F>(f: F) -> JoinHandle<T>
|
||||
where
|
||||
F: FnOnce() -> T + Send + 'static,
|
||||
T: Send + 'static,
|
||||
{
|
||||
#[cfg(feature = "tokio-trace")]
|
||||
Self::log_task_info(&f);
|
||||
async_runtime::spawn_blocking(f)
|
||||
}
|
||||
|
||||
#[cfg(feature = "tokio-trace")]
|
||||
#[track_caller]
|
||||
fn log_task_info<F>(f: &F)
|
||||
where
|
||||
F: ?Sized,
|
||||
{
|
||||
const TRACE_MINI_SIZE: usize = 0;
|
||||
let size = std::mem::size_of_val(f);
|
||||
if size <= TRACE_MINI_SIZE {
|
||||
return;
|
||||
}
|
||||
|
||||
let location = Location::caller();
|
||||
let type_str = type_name::<F>();
|
||||
let size_str = format!("{} bytes", size);
|
||||
let loc_str = format!(
|
||||
"{}:{}:{}",
|
||||
location.file(),
|
||||
location.line(),
|
||||
location.column()
|
||||
);
|
||||
|
||||
println!("┌────────────────────┬─────────────────────────────────────────────────────────────────────────────┐");
|
||||
println!("│ {:<18} │ {:<80} │", "Field", "Value");
|
||||
println!("├────────────────────┼─────────────────────────────────────────────────────────────────────────────┤");
|
||||
println!("│ {:<18} │ {:<80} │", "Type of task", type_str);
|
||||
println!("│ {:<18} │ {:<80} │", "Size of task", size_str);
|
||||
println!("│ {:<18} │ {:<80} │", "Called from", loc_str);
|
||||
println!("└────────────────────┴─────────────────────────────────────────────────────────────────────────────┘");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user