MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP Thu May 7 23:17:13 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/snap.cafsinfotech.in/node_modules/pusher-js/src/core/utils/timers/abstract_timer.ts
import TimedCallback from './timed_callback';
import { Delay, Scheduler, Canceller } from './scheduling';

abstract class Timer {
  protected clear: Canceller;
  protected timer: number | void;

  constructor(
    set: Scheduler,
    clear: Canceller,
    delay: Delay,
    callback: TimedCallback
  ) {
    this.clear = clear;
    this.timer = set(() => {
      if (this.timer) {
        this.timer = callback(this.timer);
      }
    }, delay);
  }

  /** Returns whether the timer is still running.
   *
   * @return {Boolean}
   */
  isRunning(): boolean {
    return this.timer !== null;
  }

  /** Aborts a timer when it's running. */
  ensureAborted() {
    if (this.timer) {
      this.clear(this.timer);
      this.timer = null;
    }
  }
}

export default Timer;