diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-03-10 00:22:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-10 00:22:15 +0100 |
commit | b7eb241c3569ead990d28b4f4889c2c52fc7894c (patch) | |
tree | f944f3c74741f3b61edae51a796471751ace7b76 /cli/js/net.ts | |
parent | 2115b38fef654c2d7c5998f40967fcfe39d7c515 (diff) |
reorg: move JS ops implementations to cli/js/ops/, part 3 (#4302)
Following JS ops were moved to separate files in cli/js/ops directory:
- net
- tls
- fs
Diffstat (limited to 'cli/js/net.ts')
-rw-r--r-- | cli/js/net.ts | 42 |
1 files changed, 10 insertions, 32 deletions
diff --git a/cli/js/net.ts b/cli/js/net.ts index 3b0525096..ccc5bf89e 100644 --- a/cli/js/net.ts +++ b/cli/js/net.ts @@ -2,11 +2,9 @@ import { EOF, Reader, Writer, Closer } from "./io.ts"; import { read, write } from "./ops/io.ts"; import { close } from "./ops/resources.ts"; -import { sendSync, sendAsync } from "./ops/dispatch_json.ts"; - -export type Transport = "tcp" | "udp"; -// TODO support other types: -// export type Transport = "tcp" | "tcp4" | "tcp6" | "unix" | "unixpacket"; +import * as netOps from "./ops/net.ts"; +import { Transport } from "./ops/net.ts"; +export { ShutdownMode, shutdown, Transport } from "./ops/net.ts"; export interface Addr { transport: Transport; @@ -55,26 +53,6 @@ export interface Listener extends AsyncIterator<Conn> { [Symbol.asyncIterator](): AsyncIterator<Conn>; } -export enum ShutdownMode { - // See http://man7.org/linux/man-pages/man2/shutdown.2.html - // Corresponding to SHUT_RD, SHUT_WR, SHUT_RDWR - Read = 0, - Write, - ReadWrite // unused -} - -/** Shut down socket send and receive operations. - * - * Matches behavior of POSIX shutdown(3). - * - * const listener = Deno.listen({ port: 80 }); - * const conn = await listener.accept(); - * Deno.shutdown(conn.rid, Deno.ShutdownMode.Write); - */ -export function shutdown(rid: number, how: ShutdownMode): void { - sendSync("op_shutdown", { rid, how }); -} - export class ConnImpl implements Conn { constructor( readonly rid: number, @@ -98,14 +76,14 @@ export class ConnImpl implements Conn { * Most callers should just use close(). */ closeRead(): void { - shutdown(this.rid, ShutdownMode.Read); + netOps.shutdown(this.rid, netOps.ShutdownMode.Read); } /** closeWrite shuts down (shutdown(2)) the writing side of the TCP * connection. Most callers should just use close(). */ closeWrite(): void { - shutdown(this.rid, ShutdownMode.Write); + netOps.shutdown(this.rid, netOps.ShutdownMode.Write); } } @@ -117,7 +95,7 @@ export class ListenerImpl implements Listener { ) {} async accept(): Promise<Conn> { - const res = await sendAsync("op_accept", { rid: this.rid }); + const res = await netOps.accept(this.rid); return new ConnImpl(res.rid, res.remoteAddr, res.localAddr); } @@ -152,7 +130,7 @@ export async function recvfrom( rid: number, p: Uint8Array ): Promise<[number, Addr]> { - const { size, remoteAddr } = await sendAsync("op_receive", { rid }, p); + const { size, remoteAddr } = await netOps.receive(rid, p); return [size, remoteAddr]; } @@ -175,7 +153,7 @@ export class UDPConnImpl implements UDPConn { const remote = { hostname: "127.0.0.1", transport: "udp", ...addr }; if (remote.transport !== "udp") throw Error("Remote transport must be UDP"); const args = { ...remote, rid: this.rid }; - await sendAsync("op_send", args, p); + await netOps.send(args as netOps.SendRequest, p); } close(): void { @@ -253,7 +231,7 @@ export function listen( export function listen(options: ListenOptions & { transport: "udp" }): UDPConn; export function listen(options: ListenOptions): Listener | UDPConn { const args = { ...listenDefaults, ...options }; - const res = sendSync("op_listen", args); + const res = netOps.listen(args as netOps.ListenRequest); if (args.transport === "tcp") { return new ListenerImpl(res.rid, res.localAddr); @@ -289,6 +267,6 @@ const connectDefaults = { hostname: "127.0.0.1", transport: "tcp" }; */ export async function connect(options: ConnectOptions): Promise<Conn> { options = Object.assign(connectDefaults, options); - const res = await sendAsync("op_connect", options); + const res = await netOps.connect(options as netOps.ConnectRequest); return new ConnImpl(res.rid, res.remoteAddr!, res.localAddr!); } |