Skip to content

Commit f36a80b

Browse files
committed
core: refactor signal handling
Replace the current signal API with one following a similar model to EventTarget, a la Deno. Before ``` const sh = tjs.signal('SIGINT', handleSigInt); // sh needs to be alive or the signal handler is destroyed. ``` After ``` tjs.addSignalListener('SIGINT', handleSigInt); // No need to use a handle, it can be removed with // tjs.removeSignalListener. ``` Fixes: #476 Ref: #477
1 parent 9c4ea9c commit f36a80b

File tree

7 files changed

+10111
-9961
lines changed

7 files changed

+10111
-9961
lines changed

docs/types/txikijs.d.ts

+21-22
Original file line numberDiff line numberDiff line change
@@ -68,35 +68,34 @@ declare global {
6868
| 'SIGPOLL' | 'SIGPWR' | 'SIGSYS';
6969

7070
/**
71-
* Signal handler function.
71+
* Signal listener function.
7272
*/
73-
type SignalHandlerFunction = () => void;
74-
75-
interface SignalHandler {
76-
/**
77-
* The signal that this signal handler was registered for.
78-
*/
79-
signal: Signal;
80-
81-
/**
82-
* Stop the signal handler. The registered signal handler function
83-
* will no longer be called.
84-
*/
85-
close(): void;
86-
}
87-
73+
type SignalListener = () => void;
74+
8875
/**
89-
* Registers a handler for the given signal.
76+
* Registers a listener for the given signal.
9077
*
9178
* ```js
92-
* const h = tjs.signal('SIGINT', handleSigint);
79+
* tjs.addSignalListener('SIGINT', handleSigint);
9380
* ```
9481
*
95-
* @param sig Which signal to register a handler for.
96-
* @param handler Handler function.
82+
* @param sig Which signal to register a listener for.
83+
* @param listener Listener function.
9784
*/
98-
function signal(sig: Signal, handler: SignalHandlerFunction): SignalHandler;
99-
85+
function addSignalListener(sig: Signal, listener: SignalListener): void;
86+
87+
/**
88+
* Un-registers a listener for the given signal.
89+
*
90+
* ```js
91+
* tjs.removeSignalListener('SIGINT', handleSigint);
92+
* ```
93+
*
94+
* @param sig Which signal to un-register a listener for.
95+
* @param listener Listener function.
96+
*/
97+
function removeSignalListener(sig: Signal, listener: SignalListener): void;
98+
10099
/**
101100
* Send a signal to a process.
102101
*

0 commit comments

Comments
 (0)