diff options
Diffstat (limited to 'std/signal/mod.ts')
| -rw-r--r-- | std/signal/mod.ts | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/std/signal/mod.ts b/std/signal/mod.ts deleted file mode 100644 index c28cf5e99..000000000 --- a/std/signal/mod.ts +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -import { MuxAsyncIterator } from "../async/mux_async_iterator.ts"; - -export type Disposable = { dispose: () => void }; - -/** - * Generates an AsyncIterable which can be awaited on for one or more signals. - * `dispose()` can be called when you are finished waiting on the events. - * - * Example: - * - * const sig = signal(Deno.Signal.SIGUSR1, Deno.Signal.SIGINT); - * setTimeout(() => {}, 5000); // Prevents exiting immediately - * - * for await (const _ of sig) { - * console.log("interrupt or usr1 signal received"); - * } - * - * // At some other point in your code when finished listening: - * sig.dispose(); - * - * @param signos - one or more `Deno.Signal`s to await on - */ -export function signal( - ...signos: [number, ...number[]] -): AsyncIterable<void> & Disposable { - const mux = new MuxAsyncIterator<void>(); - - if (signos.length < 1) { - throw new Error( - "No signals are given. You need to specify at least one signal to create a signal stream.", - ); - } - - const streams = signos.map(Deno.signal); - - streams.forEach((stream) => { - mux.add(stream); - }); - - // Create dispose method for the muxer of signal streams. - const dispose = (): void => { - streams.forEach((stream) => { - stream.dispose(); - }); - }; - - return Object.assign(mux, { dispose }); -} - -/** - * Registers a callback function to be called on triggering of a signal event. - * - * const handle = onSignal(Deno.Signal.SIGINT, () => { - * console.log('Received SIGINT'); - * handle.dispose(); // de-register from receiving further events - * }); - * - * @param signo One of Deno.Signal (e.g. Deno.Signal.SIGINT) - * @param callback Callback function triggered upon signal event - */ -export function onSignal(signo: number, callback: () => void): Disposable { - const sig = signal(signo); - - // allows `sig` to be returned before blocking on the await - (async (): Promise<void> => { - for await (const _ of sig) { - callback(); - } - })(); - - return sig; -} |
