diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2020-04-21 09:48:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 09:48:44 -0400 |
commit | cc1720132a9c875d377c559d301bccdda2fb71c1 (patch) | |
tree | bba93c08ab0eaea148e754381b5a668f1a88ca28 /cli/ops/signal.rs | |
parent | ef6ee25e09c902e1f9d89a40cf05660432e7143c (diff) |
Move resource_table from deno::State to deno_core::Isolate (#4834)
Diffstat (limited to 'cli/ops/signal.rs')
-rw-r--r-- | cli/ops/signal.rs | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/cli/ops/signal.rs b/cli/ops/signal.rs index b550a68cf..0d0660ce9 100644 --- a/cli/ops/signal.rs +++ b/cli/ops/signal.rs @@ -14,9 +14,9 @@ use std::task::Waker; use tokio::signal::unix::{signal, Signal, SignalKind}; pub fn init(i: &mut Isolate, s: &State) { - i.register_op("op_signal_bind", s.stateful_json_op(op_signal_bind)); - i.register_op("op_signal_unbind", s.stateful_json_op(op_signal_unbind)); - i.register_op("op_signal_poll", s.stateful_json_op(op_signal_poll)); + i.register_op("op_signal_bind", s.stateful_json_op2(op_signal_bind)); + i.register_op("op_signal_unbind", s.stateful_json_op2(op_signal_unbind)); + i.register_op("op_signal_poll", s.stateful_json_op2(op_signal_poll)); } #[cfg(unix)] @@ -38,13 +38,14 @@ struct SignalArgs { #[cfg(unix)] fn op_signal_bind( - state: &State, + isolate: &mut deno_core::Isolate, + _state: &State, args: Value, _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: BindSignalArgs = serde_json::from_value(args)?; - let mut state = state.borrow_mut(); - let rid = state.resource_table.add( + let mut resource_table = isolate.resource_table.borrow_mut(); + let rid = resource_table.add( "signal", Box::new(SignalStreamResource( signal(SignalKind::from_raw(args.signo)).expect(""), @@ -58,18 +59,19 @@ fn op_signal_bind( #[cfg(unix)] fn op_signal_poll( - state: &State, + isolate: &mut deno_core::Isolate, + _state: &State, args: Value, _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: SignalArgs = serde_json::from_value(args)?; let rid = args.rid as u32; - let state_ = state.clone(); + let resource_table = isolate.resource_table.clone(); let future = poll_fn(move |cx| { - let mut state = state_.borrow_mut(); + let mut resource_table = resource_table.borrow_mut(); if let Some(mut signal) = - state.resource_table.get_mut::<SignalStreamResource>(rid) + resource_table.get_mut::<SignalStreamResource>(rid) { signal.1 = Some(cx.waker().clone()); return signal.0.poll_recv(cx); @@ -83,14 +85,15 @@ fn op_signal_poll( #[cfg(unix)] pub fn op_signal_unbind( - state: &State, + isolate: &mut deno_core::Isolate, + _state: &State, args: Value, _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: SignalArgs = serde_json::from_value(args)?; let rid = args.rid as u32; - let mut state = state.borrow_mut(); - let resource = state.resource_table.get::<SignalStreamResource>(rid); + let mut resource_table = isolate.resource_table.borrow_mut(); + let resource = resource_table.get::<SignalStreamResource>(rid); if let Some(signal) = resource { if let Some(waker) = &signal.1 { // Wakes up the pending poll if exists. @@ -98,8 +101,7 @@ pub fn op_signal_unbind( waker.clone().wake(); } } - state - .resource_table + resource_table .close(rid) .ok_or_else(OpError::bad_resource_id)?; Ok(JsonOp::Sync(json!({}))) @@ -107,6 +109,7 @@ pub fn op_signal_unbind( #[cfg(not(unix))] pub fn op_signal_bind( + _isolate: &mut deno_core::Isolate, _state: &State, _args: Value, _zero_copy: Option<ZeroCopyBuf>, @@ -116,6 +119,7 @@ pub fn op_signal_bind( #[cfg(not(unix))] fn op_signal_unbind( + _isolate: &mut deno_core::Isolate, _state: &State, _args: Value, _zero_copy: Option<ZeroCopyBuf>, @@ -125,6 +129,7 @@ fn op_signal_unbind( #[cfg(not(unix))] fn op_signal_poll( + _isolate: &mut deno_core::Isolate, _state: &State, _args: Value, _zero_copy: Option<ZeroCopyBuf>, |