console.loggerName = 'js.timer'; console.log('Load timer module'); class Timer { #timers = new Object(); constructor() { console.log('Initialization of timer'); } create(identifier, timeout, func) { console.debug(`Create timer with identifier ${identifier}`); this.#timers[identifier] = actions.ScriptExecution.createTimer(identifier, timeout, func); } cancel(identifier) { if (!this.#timers.hasOwnProperty(identifier)) { console.debug(`No timer with identifier ${identifier} available to cancel`); return false; } if (!this.#timers[identifier].isActive()) { console.debug(`Timer with identifier ${identifier} not running. Cancel anyway`); } else { console.debug(`Cancel timer with identifier ${identifier}`); } this.#timers[identifier].cancel(); delete this.#timers[identifier]; } cancelAll() { let timers = Object.keys(this.#timers); if (timers.length == 0) { console.debug('No timers available to cancel'); return false; } for (let timer of timers) { this.cancel(timer); } } } module.exports = { Timer, };