From 060dabee4c0411015f60867f3efd933c25a19a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Fri, 4 Mar 2022 20:33:13 +0100 Subject: feat(net): add Deno.UnixConn interface (#13787) --- ext/net/01_net.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'ext/net/01_net.js') diff --git a/ext/net/01_net.js b/ext/net/01_net.js index 8c17942da..803205319 100644 --- a/ext/net/01_net.js +++ b/ext/net/01_net.js @@ -9,6 +9,7 @@ ObjectPrototypeIsPrototypeOf, PromiseResolve, SymbolAsyncIterator, + Error, Uint8Array, TypedArrayPrototypeSubarray, } = window.__bootstrap.primordials; @@ -188,6 +189,8 @@ } } + class UnixConn extends Conn {} + class Listener { #rid = 0; #addr = null; @@ -209,8 +212,11 @@ const res = await opAccept(this.rid, this.addr.transport); if (this.addr.transport == "tcp") { return new TcpConn(res.rid, res.remoteAddr, res.localAddr); + } else if (this.addr.transport == "unix") { + return new UnixConn(res.rid, res.remoteAddr, res.localAddr); + } else { + throw new Error("unreachable"); } - return new Conn(res.rid, res.remoteAddr, res.localAddr); } async next() { @@ -311,18 +317,16 @@ } async function connect(options) { - let res; - if (options.transport === "unix") { - res = await opConnect(options); - } else { - res = await opConnect({ - transport: "tcp", - hostname: "127.0.0.1", - ...options, - }); + const res = await opConnect(options); + return new UnixConn(res.rid, res.remoteAddr, res.localAddr); } + const res = await opConnect({ + transport: "tcp", + hostname: "127.0.0.1", + ...options, + }); return new TcpConn(res.rid, res.remoteAddr, res.localAddr); } @@ -330,6 +334,7 @@ connect, Conn, TcpConn, + UnixConn, opConnect, listen, opListen, -- cgit v1.2.3