1
0
This repository has been archived on 2025-01-10. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2024-01-07 11:07:20 +01:00

64 lines
1.6 KiB
JavaScript

const log = Java.type('org.slf4j.LoggerFactory').getLogger('js.utils.timer');
log.info('Load utils.timer');
class Timer {
#timers = new Object();
constructor() {
log.info('Initialization of timer helper class');
}
create(identifier, timeout, func) {
log.debug(`Create timer with identifier ${identifier}`);
this.#timers[identifier] = actions.ScriptExecution.createTimer(identifier, timeout, func);
}
cancel(identifier) {
// Return if no timer with the respactive identifier is available
if (!this.#timers.hasOwnProperty(identifier)) {
log.debug(`No timer with identifier ${identifier} available to cancel`);
return false;
}
// Check if timer is active
if (!this.#timers[identifier].isActive()) {
log.debug(`Timer with identifier ${identifier} not running. Cancel anyway`);
} else {
log.debug(`Cancel timer with identifier ${identifier}`);
}
// Cancel timer
this.#timers[identifier].cancel();
delete this.#timers[identifier];
}
isActive(identifier) {
return this.#timers[identifier].isActive();
}
cancelAll() {
// Fetch timers
let timers = Object.keys(this.#timers);
// Return if no timers available
if (timers.length == 0) {
log.debug('No timers available to cancel');
return false;
}
// Cancel all timers
for (let timer of timers) {
this.cancel(timer);
}
}
}
module.exports = {
Timer,
};