summaryrefslogtreecommitdiff
path: root/ext/net/04_net_unstable.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-10-25 20:32:51 +0200
committerGitHub <noreply@github.com>2022-10-25 20:32:51 +0200
commit8e3f825c921b38141afa7a69a0664881c5c94461 (patch)
tree09ffac0d9118d7d5214e247dbf55db06398f1bf9 /ext/net/04_net_unstable.js
parent1f6aeb430b71c16c2d9525edba63032d9ac7b372 (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.js60
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);