Compare commits

...

6 Commits

Author SHA1 Message Date
5bf568d0cd 3.0.8 2023-01-19 14:09:57 +01:00
173e1ca35d fix(core): update 2023-01-19 14:09:56 +01:00
ce258c76d2 3.0.7 2023-01-09 18:40:39 +01:00
4d2756b743 fix(core): update 2023-01-09 18:40:38 +01:00
973678d635 3.0.6 2023-01-07 20:35:28 +01:00
28e7bad605 fix(core): update 2023-01-07 20:35:27 +01:00
5 changed files with 19 additions and 27 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/taskbuffer", "name": "@pushrocks/taskbuffer",
"version": "3.0.5", "version": "3.0.8",
"private": false, "private": false,
"description": "flexible task management. TypeScript ready!", "description": "flexible task management. TypeScript ready!",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@pushrocks/taskbuffer', name: '@pushrocks/taskbuffer',
version: '3.0.5', version: '3.0.8',
description: 'flexible task management. TypeScript ready!' description: 'flexible task management. TypeScript ready!'
} }

View File

@ -6,3 +6,7 @@ export { TaskManager } from './taskbuffer.classes.taskmanager.js';
export { TaskOnce } from './taskbuffer.classes.taskonce.js'; export { TaskOnce } from './taskbuffer.classes.taskonce.js';
export { TaskRunner } from './taskbuffer.classes.taskrunner.js'; export { TaskRunner } from './taskbuffer.classes.taskrunner.js';
export { TaskDebounced } from './taskbuffer.classes.taskdebounced.js'; export { TaskDebounced } from './taskbuffer.classes.taskdebounced.js';
import * as distributedCoordination from './taskbuffer.classes.distributedcoordinator.js';
export {
distributedCoordination
}

View File

@ -5,6 +5,9 @@ import * as plugins from './taskbuffer.plugins.js';
* constains all data for the final coordinator to actually make an informed decision * constains all data for the final coordinator to actually make an informed decision
*/ */
export interface IDistributedDecisionInfoBasis { export interface IDistributedDecisionInfoBasis {
/**
* this needs to correlate to the consultationResult
*/
submitterRandomId: string; submitterRandomId: string;
taskName: string; taskName: string;
taskVersion: string; taskVersion: string;
@ -14,33 +17,18 @@ export interface IDistributedDecisionInfoBasis {
status: 'requesting' | 'gotRejected' | 'failed' | 'succeeded'; status: 'requesting' | 'gotRejected' | 'failed' | 'succeeded';
} }
export interface ITaskConsultationResult { export interface IDsitributedTaskConsultationResult {
/**
* this needs to correlate to the decisionInfoBasis
*/
submitterRandomId: string;
considered: boolean; considered: boolean;
rank: string; rank: string;
reason: string; reason: string;
shouldTrigger: boolean; shouldTrigger: boolean;
} }
export interface IDistributedCoordinatorConstructorOptions { export abstract class AbstractDistributedCoordinator {
/** public abstract announceDistributedDecisionInfoBasis(infoBasisArg: IDistributedDecisionInfoBasis): Promise<IDsitributedTaskConsultationResult>
* each execution should be announced public abstract updateDistributedDevisionInfoBasis(infoBasisArg: IDistributedDecisionInfoBasis): Promise<void>
*/
announceDistributedDecisionInfoBasis: (distributedCoordinatorArg: DistributedCoordinator, infoBasisArg: IDistributedDecisionInfoBasis) => Promise<ITaskConsultationResult>
updateDistributedDecisionInfoBasis: (distributedCoordinatorArg: DistributedCoordinator, infoBasisArg: IDistributedDecisionInfoBasis) => Promise<void>
}
export class DistributedCoordinator {
public options: IDistributedCoordinatorConstructorOptions;
constructor(optionsArg: IDistributedCoordinatorConstructorOptions) {
this.options = optionsArg;
}
public async announceDistributedDecisionInfoBasis(infoBasisArg: IDistributedDecisionInfoBasis): Promise<ITaskConsultationResult> {
return this.options.announceDistributedDecisionInfoBasis(this, infoBasisArg);
}
public async updateDistributedDevisionInfoBasis(infoBasisArg: IDistributedDecisionInfoBasis): Promise<void> {
return this.options.updateDistributedDecisionInfoBasis(this, infoBasisArg)
}
} }

View File

@ -1,6 +1,6 @@
import * as plugins from './taskbuffer.plugins.js'; import * as plugins from './taskbuffer.plugins.js';
import { Task } from './taskbuffer.classes.task.js'; import { Task } from './taskbuffer.classes.task.js';
import { DistributedCoordinator } from './taskbuffer.classes.distributedcoordinator.js'; import { AbstractDistributedCoordinator } from './taskbuffer.classes.distributedcoordinator.js';
export interface ICronJob { export interface ICronJob {
cronString: string; cronString: string;
@ -9,7 +9,7 @@ export interface ICronJob {
} }
export interface ITaskManagerConstructorOptions { export interface ITaskManagerConstructorOptions {
distributedCoordinator?: DistributedCoordinator distributedCoordinator?: AbstractDistributedCoordinator
} }
export class TaskManager { export class TaskManager {