From 375ce63c6390cf7710210ce22f14a2b5a02cbfc3 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Tue, 9 Nov 2021 19:26:17 +0100 Subject: feat(core): streams (#12596) This allows resources to be "streams" by implementing read/write/shutdown. These streams are implicit since their nature (read/write/duplex) isn't known until called, but we could easily add another method to explicitly tag resources as streams. `op_read/op_write/op_shutdown` are now builtin ops provided by `deno_core` Note: this current implementation is simple & straightforward but it results in an additional alloc per read/write call Closes #12556 --- ext/fetch/26_fetch.js | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) (limited to 'ext/fetch/26_fetch.js') diff --git a/ext/fetch/26_fetch.js b/ext/fetch/26_fetch.js index 22baaf5c2..f15e7f6b9 100644 --- a/ext/fetch/26_fetch.js +++ b/ext/fetch/26_fetch.js @@ -73,24 +73,6 @@ return core.opAsync("op_fetch_send", rid); } - /** - * @param {number} rid - * @param {Uint8Array} body - * @returns {Promise} - */ - function opFetchRequestWrite(rid, body) { - return core.opAsync("op_fetch_request_write", rid, body); - } - - /** - * @param {number} rid - * @param {Uint8Array} body - * @returns {Promise} - */ - function opFetchResponseRead(rid, body) { - return core.opAsync("op_fetch_response_read", rid, body); - } - // A finalization registry to clean up underlying fetch resources that are GC'ed. const RESOURCE_REGISTRY = new FinalizationRegistry((rid) => { core.tryClose(rid); @@ -120,7 +102,8 @@ // This is the largest possible size for a single packet on a TLS // stream. const chunk = new Uint8Array(16 * 1024 + 256); - const read = await opFetchResponseRead( + // TODO(@AaronO): switch to handle nulls if that's moved to core + const read = await core.read( responseBodyRid, chunk, ); @@ -260,7 +243,7 @@ } try { await PromisePrototypeCatch( - opFetchRequestWrite(requestBodyRid, value), + core.write(requestBodyRid, value), (err) => { if (terminator.aborted) return; throw err; -- cgit v1.2.3