From 1ab3691b091e34ffa5a0b8f2cd18a87da8c4930c Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Mon, 10 Oct 2022 10:28:35 +0200 Subject: feat(core): add Deno.core.writeAll(rid, chunk) (#16228) This commit adds a new op_write_all to core that allows writing an entire chunk in a single async op call. Internally this calls `Resource::write_all`. The `writableStreamForRid` has been moved to `06_streams.js` now, and uses this new op. Various other code paths now also use this new op. Closes #16227 --- ext/net/01_net.js | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) (limited to 'ext/net/01_net.js') diff --git a/ext/net/01_net.js b/ext/net/01_net.js index 04360116b..d7a093ba6 100644 --- a/ext/net/01_net.js +++ b/ext/net/01_net.js @@ -4,7 +4,8 @@ ((window) => { const core = window.Deno.core; const { BadResourcePrototype, InterruptedPrototype, ops } = core; - const { WritableStream, readableStreamForRid } = window.__bootstrap.streams; + const { readableStreamForRid, writableStreamForRid } = + window.__bootstrap.streams; const { Error, ObjectPrototypeIsPrototypeOf, @@ -65,39 +66,6 @@ return core.opAsync("op_dns_resolve", { query, recordType, options }); } - function tryClose(rid) { - try { - core.close(rid); - } catch { - // Ignore errors - } - } - - function writableStreamForRid(rid) { - return new WritableStream({ - async write(chunk, controller) { - try { - let nwritten = 0; - while (nwritten < chunk.length) { - nwritten += await write( - rid, - TypedArrayPrototypeSubarray(chunk, nwritten), - ); - } - } catch (e) { - controller.error(e); - tryClose(rid); - } - }, - close() { - tryClose(rid); - }, - abort() { - tryClose(rid); - }, - }); - } - class Conn { #rid = 0; #remoteAddr = null; @@ -353,7 +321,4 @@ Datagram, resolveDns, }; - window.__bootstrap.streamUtils = { - writableStreamForRid, - }; })(this); -- cgit v1.2.3