diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-08-15 13:29:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-15 13:29:19 +0200 |
commit | 2ca454b402d48c1808f8233c5adedc11b714c63c (patch) | |
tree | 592f9e877e9b0ae92be80383ab723cc290e4b01e /runtime/ops | |
parent | 18ff6bb053d600c277613628a256fe5fdd4dda67 (diff) |
refactor(ops): return BadResource errors in ResourceTable calls (#11710)
* refactor(ops): return BadResource errors in ResourceTable calls
Instead of relying on callers to map Options to Results via `.ok_or_else(bad_resource_id)` at over 176 different call sites ...
Diffstat (limited to 'runtime/ops')
-rw-r--r-- | runtime/ops/fs.rs | 18 | ||||
-rw-r--r-- | runtime/ops/fs_events.rs | 7 | ||||
-rw-r--r-- | runtime/ops/http.rs | 4 | ||||
-rw-r--r-- | runtime/ops/io.rs | 25 | ||||
-rw-r--r-- | runtime/ops/process.rs | 3 | ||||
-rw-r--r-- | runtime/ops/signal.rs | 10 | ||||
-rw-r--r-- | runtime/ops/tty.rs | 10 |
7 files changed, 19 insertions, 58 deletions
diff --git a/runtime/ops/fs.rs b/runtime/ops/fs.rs index c7f4295ba..419e41718 100644 --- a/runtime/ops/fs.rs +++ b/runtime/ops/fs.rs @@ -230,8 +230,7 @@ async fn op_seek_async( let resource = state .borrow_mut() .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(bad_resource_id()); @@ -265,8 +264,7 @@ async fn op_fdatasync_async( let resource = state .borrow_mut() .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(bad_resource_id()); @@ -300,8 +298,7 @@ async fn op_fsync_async( let resource = state .borrow_mut() .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(bad_resource_id()); @@ -335,8 +332,7 @@ async fn op_fstat_async( let resource = state .borrow_mut() .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(bad_resource_id()); @@ -1298,8 +1294,7 @@ async fn op_ftruncate_async( let resource = state .borrow_mut() .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(bad_resource_id()); @@ -1580,8 +1575,7 @@ async fn op_futime_async( let resource = state .borrow_mut() .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(bad_resource_id()); diff --git a/runtime/ops/fs_events.rs b/runtime/ops/fs_events.rs index ead56bdc4..987a7f62a 100644 --- a/runtime/ops/fs_events.rs +++ b/runtime/ops/fs_events.rs @@ -1,7 +1,6 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. use crate::permissions::Permissions; -use deno_core::error::bad_resource_id; use deno_core::error::AnyError; use deno_core::parking_lot::Mutex; use deno_core::AsyncRefCell; @@ -135,11 +134,7 @@ async fn op_fs_events_poll( rid: ResourceId, _: (), ) -> Result<Option<FsEvent>, AnyError> { - let resource = state - .borrow() - .resource_table - .get::<FsEventsResource>(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.borrow().resource_table.get::<FsEventsResource>(rid)?; let mut receiver = RcRef::map(&resource, |r| &r.receiver).borrow_mut().await; let cancel = RcRef::map(resource, |r| &r.cancel); let maybe_result = receiver.recv().or_cancel(cancel).await?; diff --git a/runtime/ops/http.rs b/runtime/ops/http.rs index 5b156fc11..58783bbbc 100644 --- a/runtime/ops/http.rs +++ b/runtime/ops/http.rs @@ -20,7 +20,7 @@ fn op_http_start( tcp_stream_rid: ResourceId, _: (), ) -> Result<ResourceId, AnyError> { - if let Some(resource_rc) = state + if let Ok(resource_rc) = state .resource_table .take::<TcpStreamResource>(tcp_stream_rid) { @@ -32,7 +32,7 @@ fn op_http_start( return deno_http::start_http(state, tcp_stream, addr, "http"); } - if let Some(resource_rc) = state + if let Ok(resource_rc) = state .resource_table .take::<TlsStreamResource>(tcp_stream_rid) { diff --git a/runtime/ops/io.rs b/runtime/ops/io.rs index e18846466..82fe3605c 100644 --- a/runtime/ops/io.rs +++ b/runtime/ops/io.rs @@ -1,9 +1,9 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +use deno_core::error::not_supported; use deno_core::error::null_opbuf; use deno_core::error::resource_unavailable; use deno_core::error::AnyError; -use deno_core::error::{bad_resource_id, not_supported}; use deno_core::op_async; use deno_core::op_sync; use deno_core::AsyncMutFuture; @@ -334,10 +334,7 @@ impl StdFileResource { F: FnMut(Result<&mut std::fs::File, ()>) -> Result<R, AnyError>, { // First we look up the rid in the resource table. - let resource = state - .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.resource_table.get::<StdFileResource>(rid)?; // Sync write only works for FsFile. It doesn't make sense to do this // for non-blocking sockets. So we error out if not FsFile. @@ -408,11 +405,7 @@ async fn op_read_async( buf: Option<ZeroCopyBuf>, ) -> Result<u32, AnyError> { let buf = &mut buf.ok_or_else(null_opbuf)?; - let resource = state - .borrow() - .resource_table - .get_any(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.borrow().resource_table.get_any(rid)?; let nread = if let Some(s) = resource.downcast_rc::<ChildStdoutResource>() { s.read(buf).await? } else if let Some(s) = resource.downcast_rc::<ChildStderrResource>() { @@ -452,11 +445,7 @@ async fn op_write_async( buf: Option<ZeroCopyBuf>, ) -> Result<u32, AnyError> { let buf = &buf.ok_or_else(null_opbuf)?; - let resource = state - .borrow() - .resource_table - .get_any(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.borrow().resource_table.get_any(rid)?; let nwritten = if let Some(s) = resource.downcast_rc::<ChildStdinResource>() { s.write(buf).await? } else if let Some(s) = resource.downcast_rc::<TcpStreamResource>() { @@ -478,11 +467,7 @@ async fn op_shutdown( rid: ResourceId, _: (), ) -> Result<(), AnyError> { - let resource = state - .borrow() - .resource_table - .get_any(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.borrow().resource_table.get_any(rid)?; if let Some(s) = resource.downcast_rc::<ChildStdinResource>() { s.shutdown().await?; } else if let Some(s) = resource.downcast_rc::<TcpStreamResource>() { diff --git a/runtime/ops/process.rs b/runtime/ops/process.rs index 0f0cc6e2a..44ead73da 100644 --- a/runtime/ops/process.rs +++ b/runtime/ops/process.rs @@ -212,8 +212,7 @@ async fn op_run_status( let resource = state .borrow_mut() .resource_table - .get::<ChildResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<ChildResource>(rid)?; let mut child = resource.borrow_mut().await; let run_status = child.wait().await?; let code = run_status.code(); diff --git a/runtime/ops/signal.rs b/runtime/ops/signal.rs index ed9c9797e..889021706 100644 --- a/runtime/ops/signal.rs +++ b/runtime/ops/signal.rs @@ -8,8 +8,6 @@ use std::cell::RefCell; use std::rc::Rc; #[cfg(unix)] -use deno_core::error::bad_resource_id; -#[cfg(unix)] use deno_core::AsyncRefCell; #[cfg(unix)] use deno_core::CancelFuture; @@ -81,8 +79,7 @@ async fn op_signal_poll( let resource = state .borrow_mut() .resource_table - .get::<SignalStreamResource>(rid) - .ok_or_else(bad_resource_id)?; + .get::<SignalStreamResource>(rid)?; let cancel = RcRef::map(&resource, |r| &r.cancel); let mut signal = RcRef::map(&resource, |r| &r.signal).borrow_mut().await; @@ -99,10 +96,7 @@ pub fn op_signal_unbind( _: (), ) -> Result<(), AnyError> { super::check_unstable(state, "Deno.signal"); - state - .resource_table - .close(rid) - .ok_or_else(bad_resource_id)?; + state.resource_table.close(rid)?; Ok(()) } diff --git a/runtime/ops/tty.rs b/runtime/ops/tty.rs index e9e2e6700..8295af1c7 100644 --- a/runtime/ops/tty.rs +++ b/runtime/ops/tty.rs @@ -89,10 +89,7 @@ fn op_set_raw( use winapi::shared::minwindef::FALSE; use winapi::um::{consoleapi, handleapi}; - let resource = state - .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.resource_table.get::<StdFileResource>(rid)?; if cbreak { return Err(not_supported()); @@ -156,10 +153,7 @@ fn op_set_raw( { use std::os::unix::io::AsRawFd; - let resource = state - .resource_table - .get::<StdFileResource>(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.resource_table.get::<StdFileResource>(rid)?; if resource.fs_file.is_none() { return Err(not_supported()); |