diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-02-08 20:34:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-08 20:34:31 +0100 |
commit | cdba5ab6fc633606aaa6f95d0825832c3ac6fe5c (patch) | |
tree | e8dee2801e14b65b2da6aca62e39cd3d3ac2a786 /cli/ops/files.rs | |
parent | 619a24390ff15d5ea5e577a4d0391823f94e8592 (diff) |
refactor: rename ThreadSafeState, use RefCell for mutable state (#3931)
* rename ThreadSafeState to State
* State stores InnerState wrapped in Rc and RefCell
Diffstat (limited to 'cli/ops/files.rs')
-rw-r--r-- | cli/ops/files.rs | 32 |
1 files changed, 19 insertions, 13 deletions
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<ZeroCopyBuf>, ) -> Result<JsonOp, ErrBox> { @@ -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<ZeroCopyBuf>, ) -> Result<JsonOp, ErrBox> { 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<ZeroCopyBuf>, ) -> Result<JsonOp, ErrBox> { @@ -191,13 +196,14 @@ fn op_seek( } }; - let mut table = state.lock_resource_table(); - let resource = table - .get_mut::<StreamResource>(rid) + let state = state.borrow(); + let resource = state + .resource_table + .get::<StreamResource>(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())?; |