From d42f1543121e7245789a96a485d1ef7645cb5fba Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Wed, 1 Nov 2023 20:26:12 +0100 Subject: feat: disposable Deno resources (#20845) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit implements Symbol.dispose and Symbol.asyncDispose for the relevant resources. Closes #20839 --------- Signed-off-by: Bartek Iwańczuk Co-authored-by: Bartek Iwańczuk --- ext/net/01_net.js | 10 ++++++++++ ext/net/lib.deno_net.d.ts | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'ext/net') diff --git a/ext/net/01_net.js b/ext/net/01_net.js index f2bf5e7df..05aca07e5 100644 --- a/ext/net/01_net.js +++ b/ext/net/01_net.js @@ -9,6 +9,8 @@ import { writableStreamForRid, } from "ext:deno_web/06_streams.js"; import * as abortSignal from "ext:deno_web/03_abort_signal.js"; +import { SymbolDispose } from "ext:deno_web/00_infra.js"; + const primordials = globalThis.__bootstrap.primordials; const { ArrayPrototypeFilter, @@ -160,6 +162,10 @@ class Conn { (id) => core.unrefOp(id), ); } + + [SymbolDispose]() { + core.tryClose(this.#rid); + } } class TcpConn extends Conn { @@ -249,6 +255,10 @@ class Listener { core.close(this.rid); } + [SymbolDispose]() { + core.tryClose(this.#rid); + } + [SymbolAsyncIterator]() { return this; } diff --git a/ext/net/lib.deno_net.d.ts b/ext/net/lib.deno_net.d.ts index 030157d63..79e15563a 100644 --- a/ext/net/lib.deno_net.d.ts +++ b/ext/net/lib.deno_net.d.ts @@ -2,6 +2,7 @@ /// /// +/// declare namespace Deno { /** @category Network */ @@ -24,7 +25,8 @@ declare namespace Deno { * * @category Network */ - export interface Listener extends AsyncIterable { + export interface Listener + extends AsyncIterable, Disposable { /** Waits for and resolves to the next connection to the `Listener`. */ accept(): Promise; /** Close closes the listener. Any pending accept promises will be rejected @@ -57,7 +59,7 @@ declare namespace Deno { export type TlsListener = Listener; /** @category Network */ - export interface Conn extends Reader, Writer, Closer { + export interface Conn extends Reader, Writer, Closer, Disposable { /** The local address of the connection. */ readonly localAddr: Addr; /** The remote address of the connection. */ -- cgit v1.2.3