From 2ca454b402d48c1808f8233c5adedc11b714c63c Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Sun, 15 Aug 2021 13:29:19 +0200 Subject: 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 ... --- ext/web/lib.rs | 6 +----- ext/web/message_port.rs | 12 ++++-------- 2 files changed, 5 insertions(+), 13 deletions(-) (limited to 'ext/web') diff --git a/ext/web/lib.rs b/ext/web/lib.rs index 9ee1eac7b..87ae46f2f 100644 --- a/ext/web/lib.rs +++ b/ext/web/lib.rs @@ -3,7 +3,6 @@ mod blob; mod message_port; -use deno_core::error::bad_resource_id; use deno_core::error::range_error; use deno_core::error::type_error; use deno_core::error::AnyError; @@ -240,10 +239,7 @@ fn op_encoding_decode( ) -> Result { let DecodeOptions { rid, stream } = options; - let resource = state - .resource_table - .get::(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.resource_table.get::(rid)?; let mut decoder = resource.decoder.borrow_mut(); let fatal = resource.fatal; diff --git a/ext/web/message_port.rs b/ext/web/message_port.rs index f73d0486a..4af99d501 100644 --- a/ext/web/message_port.rs +++ b/ext/web/message_port.rs @@ -2,7 +2,6 @@ use std::borrow::Cow; use std::cell::RefCell; use std::rc::Rc; -use deno_core::error::bad_resource_id; use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::ZeroCopyBuf; @@ -141,7 +140,7 @@ fn deserialize_js_transferables( let resource = state .resource_table .take::(id) - .ok_or_else(|| type_error("Invalid message port transfer"))?; + .map_err(|_| type_error("Invalid message port transfer"))?; resource.cancel.cancel(); let resource = Rc::try_unwrap(resource) .map_err(|_| type_error("Message port is not ready for transfer"))?; @@ -192,10 +191,7 @@ pub fn op_message_port_post_message( } } - let resource = state - .resource_table - .get::(rid) - .ok_or_else(bad_resource_id)?; + let resource = state.resource_table.get::(rid)?; resource.port.send(state, data) } @@ -208,8 +204,8 @@ pub async fn op_message_port_recv_message( let resource = { let state = state.borrow(); match state.resource_table.get::(rid) { - Some(resource) => resource, - None => return Ok(None), + Ok(resource) => resource, + Err(_) => return Ok(None), } }; let cancel = RcRef::map(resource.clone(), |r| &r.cancel); -- cgit v1.2.3