diff options
Diffstat (limited to 'cli/ops/fs.rs')
-rw-r--r-- | cli/ops/fs.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/cli/ops/fs.rs b/cli/ops/fs.rs index 6f73b1a2d..e1a431b00 100644 --- a/cli/ops/fs.rs +++ b/cli/ops/fs.rs @@ -18,8 +18,8 @@ use std::time::UNIX_EPOCH; use rand::{thread_rng, Rng}; pub fn init(i: &mut Isolate, s: &State) { - i.register_op("op_open", s.stateful_json_op(op_open)); - i.register_op("op_seek", s.stateful_json_op(op_seek)); + i.register_op("op_open", s.stateful_json_op2(op_open)); + i.register_op("op_seek", s.stateful_json_op2(op_seek)); i.register_op("op_umask", s.stateful_json_op(op_umask)); i.register_op("op_chdir", s.stateful_json_op(op_chdir)); i.register_op("op_mkdir", s.stateful_json_op(op_mkdir)); @@ -68,13 +68,14 @@ struct OpenOptions { } fn op_open( + isolate: &mut deno_core::Isolate, state: &State, args: Value, _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { let args: OpenArgs = serde_json::from_value(args)?; let path = resolve_from_cwd(Path::new(&args.path))?; - let state_ = state.clone(); + let resource_table = isolate.resource_table.clone(); let mut open_options = std::fs::OpenOptions::new(); @@ -166,8 +167,8 @@ fn op_open( if is_sync { let std_file = open_options.open(path)?; let tokio_file = tokio::fs::File::from_std(std_file); - let mut state = state_.borrow_mut(); - let rid = state.resource_table.add( + let mut resource_table = resource_table.borrow_mut(); + let rid = resource_table.add( "fsFile", Box::new(StreamResourceHolder::new(StreamResource::FsFile(Some(( tokio_file, @@ -180,8 +181,8 @@ fn op_open( let tokio_file = tokio::fs::OpenOptions::from(open_options) .open(path) .await?; - let mut state = state_.borrow_mut(); - let rid = state.resource_table.add( + let mut resource_table = resource_table.borrow_mut(); + let rid = resource_table.add( "fsFile", Box::new(StreamResourceHolder::new(StreamResource::FsFile(Some(( tokio_file, @@ -204,7 +205,8 @@ struct SeekArgs { } fn op_seek( - state: &State, + isolate: &mut deno_core::Isolate, + _state: &State, args: Value, _zero_copy: Option<ZeroCopyBuf>, ) -> Result<JsonOp, OpError> { @@ -226,12 +228,12 @@ fn op_seek( } }; - let state = state.clone(); + let resource_table = isolate.resource_table.clone(); let is_sync = args.promise_id.is_none(); if is_sync { - let mut s = state.borrow_mut(); - let pos = std_file_resource(&mut s.resource_table, rid, |r| match r { + let mut resource_table = resource_table.borrow_mut(); + let pos = std_file_resource(&mut resource_table, rid, |r| match r { Ok(std_file) => std_file.seek(seek_from).map_err(OpError::from), Err(_) => Err(OpError::type_error( "cannot seek on this type of resource".to_string(), @@ -242,8 +244,8 @@ fn op_seek( // TODO(ry) This is a fake async op. We need to use poll_fn, // tokio::fs::File::start_seek and tokio::fs::File::poll_complete let fut = async move { - let mut s = state.borrow_mut(); - let pos = std_file_resource(&mut s.resource_table, rid, |r| match r { + let mut resource_table = resource_table.borrow_mut(); + let pos = std_file_resource(&mut resource_table, rid, |r| match r { Ok(std_file) => std_file.seek(seek_from).map_err(OpError::from), Err(_) => Err(OpError::type_error( "cannot seek on this type of resource".to_string(), |