libnode_sys/napi/napi_8/
napi_add_async_cleanup_hook.rs1use std::ffi::c_void;
2use std::sync::OnceLock;
3
4use super::super::*;
5
6const SYMBOL: &[u8] = "napi_add_async_cleanup_hook".as_bytes();
7type SIGNATURE = fn(
8 env: napi_env,
9 hook: napi_async_cleanup_hook,
10 arg: *mut c_void,
11 remove_handle: *mut napi_async_cleanup_hook_handle,
12) -> napi_status;
13static CACHE: OnceLock<crate::load::Symbol<SIGNATURE>> = OnceLock::new();
14
15pub unsafe fn napi_add_async_cleanup_hook(
16 env: napi_env,
17 hook: napi_async_cleanup_hook,
18 arg: *mut c_void,
19 remove_handle: *mut napi_async_cleanup_hook_handle,
20) -> napi_status {
21 unsafe {
22 CACHE.get_or_init(|| crate::load::get_sym(SYMBOL).unwrap())(env, hook, arg, remove_handle)
23 }
24}