libnode_sys/napi/napi_8/
napi_add_async_cleanup_hook.rs

1use 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}