UNPKG

simple-job-scheduler

Version:

A simple job scheduling system written in TypeScript

38 lines 2.73 kB
import { Logger } from 'simple-logging-system'; const logger = new Logger('Job'); export 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"; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSm9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9Kb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRWpDLE1BQU0sT0FBTyxHQUFHO0lBS2QsWUFDVyxJQUFZLEVBQ1osUUFBNkIsRUFDN0IsZ0JBQXdCLEVBQ2hCLFlBQTJCO1FBSG5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFFNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUk7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO1NBQzNCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxvREFBb0QsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDOUUsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxJQUFJLFdBQVcsSUFBSSxDQUFDLGVBQWUsY0FBYyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDOztDQUNGIn0=