1use std::path::Path;
8
9use tokio::task::spawn_blocking;
10
11use crate::error::BlktraceError;
12use crate::session::{BlkTrace, BlkTraceReport, BlkTraceSession};
13
14impl BlkTrace {
15 pub async fn monitor_async(path: impl AsRef<Path>) -> Result<BlkTraceSession, BlktraceError> {
17 let path = path.as_ref().to_owned();
18 spawn_blocking(move || BlkTrace::monitor(path))
19 .await
20 .map_err(|_| BlktraceError::ThreadPanicked)?
21 }
22}
23
24impl BlkTraceSession {
25 pub async fn shutdown_async(self) -> Result<BlkTraceReport, BlktraceError> {
27 spawn_blocking(move || self.shutdown())
28 .await
29 .map_err(|_| BlktraceError::ThreadPanicked)?
30 }
31}