Files
voice-call-service/internal/timer/timer.js
2026-05-29 01:06:47 +03:00

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);
}