From 70a50344315a4c3361fc321e78e076fb09a502b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Souto?= Date: Mon, 23 Mar 2020 22:02:51 +0000 Subject: feat: Support Unix Domain Sockets (#4176) --- cli/js/ops/net.ts | 80 ++++++++++++++++++++----------------------------------- 1 file changed, 29 insertions(+), 51 deletions(-) (limited to 'cli/js/ops/net.ts') diff --git a/cli/js/ops/net.ts b/cli/js/ops/net.ts index 25f3a8322..7734e8811 100644 --- a/cli/js/ops/net.ts +++ b/cli/js/ops/net.ts @@ -1,9 +1,18 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { sendSync, sendAsync } from "./dispatch_json.ts"; -export type Transport = "tcp" | "udp"; -// TODO support other types: -// export type Transport = "tcp" | "tcp4" | "tcp6" | "unix" | "unixpacket"; +export interface NetAddr { + transport: "tcp" | "udp"; + hostname: string; + port: number; +} + +export interface UnixAddr { + transport: "unix" | "unixpacket"; + address: string; +} + +export type Addr = NetAddr | UnixAddr; export enum ShutdownMode { // See http://man7.org/linux/man-pages/man2/shutdown.2.html @@ -19,35 +28,22 @@ export function shutdown(rid: number, how: ShutdownMode): void { interface AcceptResponse { rid: number; - localAddr: { - hostname: string; - port: number; - transport: Transport; - }; - remoteAddr: { - hostname: string; - port: number; - transport: Transport; - }; + localAddr: Addr; + remoteAddr: Addr; } -export function accept(rid: number): Promise { - return sendAsync("op_accept", { rid }); +export function accept( + rid: number, + transport: string +): Promise { + return sendAsync("op_accept", { rid, transport }); } -export interface ListenRequest { - transport: Transport; - hostname: string; - port: number; -} +export type ListenRequest = Addr; interface ListenResponse { rid: number; - localAddr: { - hostname: string; - port: number; - transport: Transport; - }; + localAddr: Addr; } export function listen(args: ListenRequest): ListenResponse { @@ -56,23 +52,11 @@ export function listen(args: ListenRequest): ListenResponse { interface ConnectResponse { rid: number; - localAddr: { - hostname: string; - port: number; - transport: Transport; - }; - remoteAddr: { - hostname: string; - port: number; - transport: Transport; - }; + localAddr: Addr; + remoteAddr: Addr; } -export interface ConnectRequest { - transport: Transport; - hostname: string; - port: number; -} +export type ConnectRequest = Addr; export function connect(args: ConnectRequest): Promise { return sendAsync("op_connect", args); @@ -80,26 +64,20 @@ export function connect(args: ConnectRequest): Promise { interface ReceiveResponse { size: number; - remoteAddr: { - hostname: string; - port: number; - transport: Transport; - }; + remoteAddr: Addr; } export function receive( rid: number, + transport: string, zeroCopy: Uint8Array ): Promise { - return sendAsync("op_receive", { rid }, zeroCopy); + return sendAsync("op_receive", { rid, transport }, zeroCopy); } -export interface SendRequest { +export type SendRequest = { rid: number; - hostname: string; - port: number; - transport: Transport; -} +} & Addr; export async function send( args: SendRequest, -- cgit v1.2.3