29 lines
733 B
Rust
29 lines
733 B
Rust
|
use std::mem;
|
||
|
|
||
|
use crate::{sys, Status};
|
||
|
|
||
|
/// Notice
|
||
|
/// The hook will be removed if `AsyncCleanupHook` was `dropped`.
|
||
|
/// If you want keep the hook until node process exited, call the `AsyncCleanupHook::forget`.
|
||
|
#[repr(transparent)]
|
||
|
pub struct AsyncCleanupHook(pub(crate) sys::napi_async_cleanup_hook_handle);
|
||
|
|
||
|
impl AsyncCleanupHook {
|
||
|
/// Safe to forget it.
|
||
|
/// Things will be cleanup before process exited.
|
||
|
pub fn forget(self) {
|
||
|
mem::forget(self);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl Drop for AsyncCleanupHook {
|
||
|
fn drop(&mut self) {
|
||
|
let status = unsafe { sys::napi_remove_async_cleanup_hook(self.0) };
|
||
|
assert!(
|
||
|
status == sys::Status::napi_ok,
|
||
|
"Delete async cleanup hook failed: {}",
|
||
|
Status::from(status)
|
||
|
);
|
||
|
}
|
||
|
}
|