feat: initial commit at project root
This commit is contained in:
32
internal/timer/timer.js
Normal file
32
internal/timer/timer.js
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* CallTimer wraps Node's setTimeout/clearTimeout to allow session cancellations.
|
||||
*/
|
||||
export class CallTimer {
|
||||
/**
|
||||
* @param {number} durationMs
|
||||
* @param {function} onExpiry
|
||||
*/
|
||||
constructor(durationMs, onExpiry) {
|
||||
this.timer = setTimeout(onExpiry, durationMs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancels the active timer.
|
||||
*/
|
||||
stop() {
|
||||
if (this.timer) {
|
||||
clearTimeout(this.timer);
|
||||
this.timer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a session timeout timer.
|
||||
* @param {number} durationMs
|
||||
* @param {function} onExpiry
|
||||
* @returns {CallTimer}
|
||||
*/
|
||||
export function startTimer(durationMs, onExpiry) {
|
||||
return new CallTimer(durationMs, onExpiry);
|
||||
}
|
||||
Reference in New Issue
Block a user