diff --git a/utils/index.js b/utils/index.js index dc46682..a382cf4 100644 --- a/utils/index.js +++ b/utils/index.js @@ -4,5 +4,6 @@ console.log('Load utils') module.exports = { get equipment() { return require('./equipment') }, get lib() { return require('./lib') }, + get timer() { return require('./timer')}, get watch() { return require('./watch') }, } \ No newline at end of file diff --git a/utils/timer.js b/utils/timer.js new file mode 100644 index 0000000..3c62bd2 --- /dev/null +++ b/utils/timer.js @@ -0,0 +1,54 @@ +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, +}; + +