summaryrefslogtreecommitdiff
path: root/cli/ops/signal.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2020-04-21 09:48:44 -0400
committerGitHub <noreply@github.com>2020-04-21 09:48:44 -0400
commitcc1720132a9c875d377c559d301bccdda2fb71c1 (patch)
treebba93c08ab0eaea148e754381b5a668f1a88ca28 /cli/ops/signal.rs
parentef6ee25e09c902e1f9d89a40cf05660432e7143c (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.rs35
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>,