summaryrefslogtreecommitdiff
path: root/ext/net
diff options
context:
space:
mode:
authorLuca Casonato <hello@lcas.dev>2022-10-10 10:28:35 +0200
committerGitHub <noreply@github.com>2022-10-10 10:28:35 +0200
commit1ab3691b091e34ffa5a0b8f2cd18a87da8c4930c (patch)
tree919c07adfc4f1f9818ec6827adedf17d7a71e2f5 /ext/net
parent4d6aed1b528efc9bdac7cce7922259f5c703ec55 (diff)
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
Diffstat (limited to 'ext/net')
-rw-r--r--ext/net/01_net.js39
1 files changed, 2 insertions, 37 deletions
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);