From 20c7300412bdb487fc758577d6256bbcf96efd12 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Fri, 30 Sep 2022 07:54:12 +0200 Subject: refactor(ext/http): remove op_http_read (#16096) We can use Resource::read_return & op_read instead. This allows HTTP request bodies to participate in FastStream. To make this work, `readableStreamForRid` required a change to allow non auto-closing resources to be handled. This required some minor changes in our FastStream paths in ext/http and ext/flash. --- ext/flash/lib.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'ext/flash/lib.rs') diff --git a/ext/flash/lib.rs b/ext/flash/lib.rs index 0714e379d..a7bd8b439 100644 --- a/ext/flash/lib.rs +++ b/ext/flash/lib.rs @@ -205,16 +205,20 @@ async fn op_flash_write_resource( server_id: u32, token: u32, resource_id: deno_core::ResourceId, + auto_close: bool, ) -> Result<(), AnyError> { - let resource = op_state.borrow_mut().resource_table.take_any(resource_id)?; - let sock = { + let (resource, sock) = { let op_state = &mut op_state.borrow_mut(); + let resource = if auto_close { + op_state.resource_table.take_any(resource_id)? + } else { + op_state.resource_table.get_any(resource_id)? + }; let flash_ctx = op_state.borrow_mut::(); let ctx = flash_ctx.servers.get_mut(&server_id).unwrap(); - ctx.requests.remove(&token).unwrap().socket() + (resource, ctx.requests.remove(&token).unwrap().socket()) }; - drop(op_state); let _ = sock.write(&response); #[cfg(unix)] -- cgit v1.2.3