From cdba5ab6fc633606aaa6f95d0825832c3ac6fe5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sat, 8 Feb 2020 20:34:31 +0100 Subject: refactor: rename ThreadSafeState, use RefCell for mutable state (#3931) * rename ThreadSafeState to State * State stores InnerState wrapped in Rc and RefCell --- cli/ops/files.rs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'cli/ops/files.rs') diff --git a/cli/ops/files.rs b/cli/ops/files.rs index f32de90b9..d625d4590 100644 --- a/cli/ops/files.rs +++ b/cli/ops/files.rs @@ -6,7 +6,7 @@ use crate::deno_error::DenoError; use crate::deno_error::ErrorKind; use crate::fs as deno_fs; use crate::ops::json_op; -use crate::state::ThreadSafeState; +use crate::state::State; use deno_core::*; use futures::future::FutureExt; use std; @@ -15,7 +15,7 @@ use std::io::SeekFrom; use std::path::Path; use tokio; -pub fn init(i: &mut Isolate, s: &ThreadSafeState) { +pub fn init(i: &mut Isolate, s: &State) { i.register_op("open", s.core_op(json_op(s.stateful_op(op_open)))); i.register_op("close", s.core_op(json_op(s.stateful_op(op_close)))); i.register_op("seek", s.core_op(json_op(s.stateful_op(op_seek)))); @@ -43,7 +43,7 @@ struct OpenOptions { } fn op_open( - state: &ThreadSafeState, + state: &State, args: Value, _zero_copy: Option, ) -> Result { @@ -130,8 +130,10 @@ fn op_open( let fut = async move { let fs_file = open_options.open(filename).await?; - let mut table = state_.lock_resource_table(); - let rid = table.add("fsFile", Box::new(StreamResource::FsFile(fs_file))); + let mut state = state_.borrow_mut(); + let rid = state + .resource_table + .add("fsFile", Box::new(StreamResource::FsFile(fs_file))); Ok(json!(rid)) }; @@ -149,14 +151,17 @@ struct CloseArgs { } fn op_close( - state: &ThreadSafeState, + state: &State, args: Value, _zero_copy: Option, ) -> Result { let args: CloseArgs = serde_json::from_value(args)?; - let mut table = state.lock_resource_table(); - table.close(args.rid as u32).ok_or_else(bad_resource)?; + let mut state = state.borrow_mut(); + state + .resource_table + .close(args.rid as u32) + .ok_or_else(bad_resource)?; Ok(JsonOp::Sync(json!({}))) } @@ -170,7 +175,7 @@ struct SeekArgs { } fn op_seek( - state: &ThreadSafeState, + state: &State, args: Value, _zero_copy: Option, ) -> Result { @@ -191,13 +196,14 @@ fn op_seek( } }; - let mut table = state.lock_resource_table(); - let resource = table - .get_mut::(rid) + let state = state.borrow(); + let resource = state + .resource_table + .get::(rid) .ok_or_else(bad_resource)?; let tokio_file = match resource { - StreamResource::FsFile(ref mut file) => file, + StreamResource::FsFile(ref file) => file, _ => return Err(bad_resource()), }; let mut file = futures::executor::block_on(tokio_file.try_clone())?; -- cgit v1.2.3