refactor: rename ThreadSafeState, use RefCell for mutable state (#3931)

* rename ThreadSafeState to State
* State stores InnerState wrapped in Rc and RefCell
This commit is contained in:
Bartek Iwańczuk 2020-02-08 20:34:31 +01:00 committed by GitHub
parent 619a24390f
commit cdba5ab6fc
31 changed files with 454 additions and 464 deletions

View file

@ -1,7 +1,7 @@
use super::dispatch_json::{Deserialize, JsonOp, Value};
use crate::fs as deno_fs;
use crate::ops::json_op;
use crate::state::ThreadSafeState;
use crate::state::State;
use deno_core::*;
use dlopen::symbor::Library;
use std::collections::HashMap;
@ -9,11 +9,7 @@ use std::ffi::OsStr;
use std::path::Path;
use std::sync::Arc;
pub fn init(
i: &mut Isolate,
s: &ThreadSafeState,
r: Arc<deno_core::OpRegistry>,
) {
pub fn init(i: &mut Isolate, s: &State, r: Arc<deno_core::OpRegistry>) {
let r_ = r;
i.register_op(
"open_plugin",
@ -56,7 +52,7 @@ struct OpenPluginArgs {
pub fn op_open_plugin(
registry: &Arc<deno_core::OpRegistry>,
state: &ThreadSafeState,
state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<JsonOp, ErrBox> {
@ -70,9 +66,14 @@ pub fn op_open_plugin(
lib,
ops: HashMap::new(),
};
let mut table = state.lock_resource_table();
let rid = table.add("plugin", Box::new(plugin_resource));
let plugin_resource = table.get_mut::<PluginResource>(rid).unwrap();
let mut state_ = state.borrow_mut();
let rid = state_
.resource_table
.add("plugin", Box::new(plugin_resource));
let plugin_resource = state_
.resource_table
.get_mut::<PluginResource>(rid)
.unwrap();
let init_fn = *unsafe {
plugin_resource