33 lines
661 B
JavaScript
33 lines
661 B
JavaScript
/**
|
|
* 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);
|
|
}
|