simple-job-scheduler
Version:
A simple job scheduling system written in TypeScript
42 lines • 2.87 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Job = void 0;
const simple_logging_system_1 = require("simple-logging-system");
const logger = new simple_logging_system_1.Logger('Job');
class Job {
constructor(name, runnable, intervalInMillis, cancelHandle) {
this.name = name;
this.runnable = runnable;
this.intervalInMillis = intervalInMillis;
this.cancelHandle = cancelHandle;
this.executionsCount = 0;
this.isCancelledState = false;
}
execute() {
try {
this.runnable(this);
this.executionsCount += 1;
}
catch (e) {
logger.error(`An error occurred while executing the job "${this.name}"`, e);
}
}
getExecutionsCount() {
return this.executionsCount;
}
isCancelled() {
return this.isCancelledState;
}
cancel() {
if (this.isCancelledState) {
logger.warn(`Trying to cancel an already cancelled job named "${this.name}"`);
return false;
}
logger.info(`Cancelling job "${this.name}" after ${this.executionsCount} executions.`);
this.isCancelledState = true;
return this.cancelHandle();
}
static get [Symbol.for("___CTOR_NAME___")]() { return "Job"; }
}
exports.Job = Job;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSm9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9Kb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUVBQStDO0FBRS9DLE1BQU0sTUFBTSxHQUFHLElBQUksOEJBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVqQyxNQUFhLEdBQUc7SUFLZCxZQUNXLElBQVksRUFDWixRQUE2QixFQUM3QixnQkFBd0IsRUFDaEIsWUFBMkI7UUFIbkMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUU1QyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSTtZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7U0FDM0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsOENBQThDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM3RTtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsZUFBZSxjQUFjLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7O0NBQ0Y7QUF6Q0Qsa0JBeUNDIn0=