diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-10-25 20:32:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 20:32:51 +0200 |
commit | 8e3f825c921b38141afa7a69a0664881c5c94461 (patch) | |
tree | 09ffac0d9118d7d5214e247dbf55db06398f1bf9 /ext/net/04_net_unstable.js | |
parent | 1f6aeb430b71c16c2d9525edba63032d9ac7b372 (diff) |
Revert "refactor(ext/net): clean up variadic network ops (#16392)" (#16417)
Should fix https://github.com/denoland/deno_std/issues/2807
Diffstat (limited to 'ext/net/04_net_unstable.js')
-rw-r--r-- | ext/net/04_net_unstable.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/ext/net/04_net_unstable.js b/ext/net/04_net_unstable.js new file mode 100644 index 000000000..fcdb3c547 --- /dev/null +++ b/ext/net/04_net_unstable.js @@ -0,0 +1,60 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +"use strict"; + +((window) => { + const net = window.__bootstrap.net; + + function listen(options) { + if (options.transport === "unix") { + const res = net.opListen(options); + return new Listener(res.rid, res.localAddr); + } else { + return net.listen(options, Listener); + } + } + + function listenDatagram( + options, + ) { + let res; + if (options.transport === "unixpacket") { + res = net.opListen(options); + } else { + res = net.opListen({ + transport: "udp", + hostname: "127.0.0.1", + ...options, + }); + } + + return new net.Datagram(res.rid, res.localAddr); + } + + async function connect( + options, + ) { + if (options.transport === "unix") { + const res = await net.opConnect(options); + return new net.Conn(res.rid, res.remoteAddr, res.localAddr); + } else { + return net.connect(options); + } + } + + class Listener extends net.Listener { + ref() { + this[net.listenerRef](); + } + + unref() { + this[net.listenerUnref](); + } + } + + window.__bootstrap.netUnstable = { + connect, + listenDatagram, + listen, + Listener, + }; +})(this); |