mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 17:34:47 -05:00
chore(napi): Remove unstable libuv methods (#17416)
This commit removes the libuv pollyfills introduced with Node-API support. It is too much Node-specific. Most Node-API modules that depend on libuv are already giving up the benefits of Node-API. We should rather encourage modules to use `ThreadSafeFunction` or `AsyncWork` to interface with the event loop. Relevant discussion a few months ago: https://github.com/denoland/deno/pull/13633#discussion_r904916178 cc @bartlomieju
This commit is contained in:
parent
b4ce48c80a
commit
b9cd19a1e8
2 changed files with 1 additions and 68 deletions
|
@ -141,8 +141,7 @@ fn napi_module_register(module: *const NapiModule) -> Result {
|
||||||
|
|
||||||
#[napi_sym::napi_sym]
|
#[napi_sym::napi_sym]
|
||||||
fn napi_get_uv_event_loop(_env: *mut Env, uv_loop: *mut *mut ()) -> Result {
|
fn napi_get_uv_event_loop(_env: *mut Env, uv_loop: *mut *mut ()) -> Result {
|
||||||
// Don't error out because addons may pass this to
|
// There is no uv_loop in Deno
|
||||||
// our libuv _polyfills_.
|
|
||||||
*uv_loop = std::ptr::null_mut();
|
*uv_loop = std::ptr::null_mut();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,69 +20,3 @@ pub mod env;
|
||||||
pub mod js_native_api;
|
pub mod js_native_api;
|
||||||
pub mod threadsafe_functions;
|
pub mod threadsafe_functions;
|
||||||
pub mod util;
|
pub mod util;
|
||||||
|
|
||||||
use std::os::raw::c_int;
|
|
||||||
use std::os::raw::c_void;
|
|
||||||
|
|
||||||
pub type uv_async_t = *mut uv_async;
|
|
||||||
pub type uv_loop_t = *mut c_void;
|
|
||||||
pub type uv_async_cb = extern "C" fn(handle: uv_async_t);
|
|
||||||
|
|
||||||
use deno_core::futures::channel::mpsc;
|
|
||||||
#[repr(C)]
|
|
||||||
pub struct uv_async {
|
|
||||||
pub data: Option<*mut c_void>,
|
|
||||||
callback: uv_async_cb,
|
|
||||||
sender: Option<
|
|
||||||
mpsc::UnboundedSender<deno_runtime::deno_napi::PendingNapiAsyncWork>,
|
|
||||||
>,
|
|
||||||
ref_sender: Option<
|
|
||||||
mpsc::UnboundedSender<deno_runtime::deno_napi::ThreadSafeFunctionStatus>,
|
|
||||||
>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[no_mangle]
|
|
||||||
pub extern "C" fn uv_default_loop() -> uv_loop_t {
|
|
||||||
std::ptr::null_mut()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// # Safety
|
|
||||||
/// libuv APIs
|
|
||||||
#[no_mangle]
|
|
||||||
pub unsafe extern "C" fn uv_async_init(
|
|
||||||
_loop: uv_loop_t,
|
|
||||||
async_: uv_async_t,
|
|
||||||
cb: uv_async_cb,
|
|
||||||
) -> c_int {
|
|
||||||
(*async_).callback = cb;
|
|
||||||
deno_runtime::deno_napi::ASYNC_WORK_SENDER.with(|sender| {
|
|
||||||
(*async_).sender = Some(sender.borrow().clone().unwrap());
|
|
||||||
});
|
|
||||||
|
|
||||||
deno_runtime::deno_napi::THREAD_SAFE_FN_SENDER.with(|sender| {
|
|
||||||
sender
|
|
||||||
.borrow()
|
|
||||||
.clone()
|
|
||||||
.unwrap()
|
|
||||||
.unbounded_send(deno_runtime::deno_napi::ThreadSafeFunctionStatus::Alive)
|
|
||||||
.unwrap();
|
|
||||||
(*async_).ref_sender = Some(sender.borrow().clone().unwrap());
|
|
||||||
});
|
|
||||||
|
|
||||||
0
|
|
||||||
}
|
|
||||||
|
|
||||||
/// # Safety
|
|
||||||
/// libuv APIs
|
|
||||||
#[no_mangle]
|
|
||||||
pub unsafe extern "C" fn uv_async_send(async_: uv_async_t) -> c_int {
|
|
||||||
let sender = (*async_).sender.as_ref().unwrap();
|
|
||||||
let fut = Box::new(move || {
|
|
||||||
((*async_).callback)(async_);
|
|
||||||
});
|
|
||||||
|
|
||||||
match sender.unbounded_send(fut) {
|
|
||||||
Ok(_) => 0,
|
|
||||||
Err(_) => 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue