summaryrefslogtreecommitdiff
path: root/cli/js/signals.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/signals.ts')
-rw-r--r--cli/js/signals.ts173
1 files changed, 0 insertions, 173 deletions
diff --git a/cli/js/signals.ts b/cli/js/signals.ts
deleted file mode 100644
index a29bac0d7..000000000
--- a/cli/js/signals.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-
-import { bindSignal, pollSignal, unbindSignal } from "./ops/signal.ts";
-import { build } from "./build.ts";
-
-// From `kill -l`
-enum LinuxSignal {
- SIGHUP = 1,
- SIGINT = 2,
- SIGQUIT = 3,
- SIGILL = 4,
- SIGTRAP = 5,
- SIGABRT = 6,
- SIGBUS = 7,
- SIGFPE = 8,
- SIGKILL = 9,
- SIGUSR1 = 10,
- SIGSEGV = 11,
- SIGUSR2 = 12,
- SIGPIPE = 13,
- SIGALRM = 14,
- SIGTERM = 15,
- SIGSTKFLT = 16,
- SIGCHLD = 17,
- SIGCONT = 18,
- SIGSTOP = 19,
- SIGTSTP = 20,
- SIGTTIN = 21,
- SIGTTOU = 22,
- SIGURG = 23,
- SIGXCPU = 24,
- SIGXFSZ = 25,
- SIGVTALRM = 26,
- SIGPROF = 27,
- SIGWINCH = 28,
- SIGIO = 29,
- SIGPWR = 30,
- SIGSYS = 31,
-}
-
-// From `kill -l`
-enum MacOSSignal {
- SIGHUP = 1,
- SIGINT = 2,
- SIGQUIT = 3,
- SIGILL = 4,
- SIGTRAP = 5,
- SIGABRT = 6,
- SIGEMT = 7,
- SIGFPE = 8,
- SIGKILL = 9,
- SIGBUS = 10,
- SIGSEGV = 11,
- SIGSYS = 12,
- SIGPIPE = 13,
- SIGALRM = 14,
- SIGTERM = 15,
- SIGURG = 16,
- SIGSTOP = 17,
- SIGTSTP = 18,
- SIGCONT = 19,
- SIGCHLD = 20,
- SIGTTIN = 21,
- SIGTTOU = 22,
- SIGIO = 23,
- SIGXCPU = 24,
- SIGXFSZ = 25,
- SIGVTALRM = 26,
- SIGPROF = 27,
- SIGWINCH = 28,
- SIGINFO = 29,
- SIGUSR1 = 30,
- SIGUSR2 = 31,
-}
-
-export const Signal: { [key: string]: number } = {};
-
-export function setSignals(): void {
- if (build.os === "darwin") {
- Object.assign(Signal, MacOSSignal);
- } else {
- Object.assign(Signal, LinuxSignal);
- }
-}
-
-export function signal(signo: number): SignalStream {
- if (build.os === "windows") {
- throw new Error("not implemented!");
- }
- return new SignalStream(signo);
-}
-
-export const signals = {
- alarm(): SignalStream {
- return signal(Signal.SIGALRM);
- },
- child(): SignalStream {
- return signal(Signal.SIGCHLD);
- },
- hungup(): SignalStream {
- return signal(Signal.SIGHUP);
- },
- interrupt(): SignalStream {
- return signal(Signal.SIGINT);
- },
- io(): SignalStream {
- return signal(Signal.SIGIO);
- },
- pipe(): SignalStream {
- return signal(Signal.SIGPIPE);
- },
- quit(): SignalStream {
- return signal(Signal.SIGQUIT);
- },
- terminate(): SignalStream {
- return signal(Signal.SIGTERM);
- },
- userDefined1(): SignalStream {
- return signal(Signal.SIGUSR1);
- },
- userDefined2(): SignalStream {
- return signal(Signal.SIGUSR2);
- },
- windowChange(): SignalStream {
- return signal(Signal.SIGWINCH);
- },
-};
-
-export class SignalStream
- implements AsyncIterableIterator<void>, PromiseLike<void> {
- #disposed = false;
- #pollingPromise: Promise<boolean> = Promise.resolve(false);
- readonly #rid: number;
-
- constructor(signo: number) {
- this.#rid = bindSignal(signo).rid;
- this.#loop();
- }
-
- #pollSignal = async (): Promise<boolean> => {
- const res = await pollSignal(this.#rid);
- return res.done;
- };
-
- #loop = async (): Promise<void> => {
- do {
- this.#pollingPromise = this.#pollSignal();
- } while (!(await this.#pollingPromise) && !this.#disposed);
- };
-
- then<T, S>(
- f: (v: void) => T | Promise<T>,
- g?: (v: Error) => S | Promise<S>,
- ): Promise<T | S> {
- return this.#pollingPromise.then(() => {}).then(f, g);
- }
-
- async next(): Promise<IteratorResult<void>> {
- return { done: await this.#pollingPromise, value: undefined };
- }
-
- [Symbol.asyncIterator](): AsyncIterableIterator<void> {
- return this;
- }
-
- dispose(): void {
- if (this.#disposed) {
- throw new Error("The stream has already been disposed.");
- }
- this.#disposed = true;
- unbindSignal(this.#rid);
- }
-}