Compare commits

..

6 Commits

Author SHA1 Message Date
f5ca4a696c 3.0.9 2023-01-19 14:20:45 +01:00
b48d42dfb9 fix(core): update 2023-01-19 14:20:44 +01:00
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
4 changed files with 17 additions and 29 deletions

View File

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

View File

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

View File

@ -4,7 +4,10 @@ import * as plugins from './taskbuffer.plugins.js';
/**
* constains all data for the final coordinator to actually make an informed decision
*/
export interface IDistributedDecisionInfoBasis {
export interface IDistributedTaskRequest {
/**
* this needs to correlate to the consultationResult
*/
submitterRandomId: string;
taskName: string;
taskVersion: string;
@ -14,33 +17,18 @@ export interface IDistributedDecisionInfoBasis {
status: 'requesting' | 'gotRejected' | 'failed' | 'succeeded';
}
export interface ITaskConsultationResult {
export interface IDsitributedTaskRequestResult {
/**
* this needs to correlate to the decisionInfoBasis
*/
submitterRandomId: string;
considered: boolean;
rank: string;
reason: string;
shouldTrigger: boolean;
}
export interface IDistributedCoordinatorConstructorOptions {
/**
* each execution should be announced
*/
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)
}
export abstract class AbstractDistributedCoordinator {
public abstract fireDistributedTaskRequest(infoBasisArg: IDistributedTaskRequest): Promise<IDsitributedTaskRequestResult>
public abstract updateDistributedTaskRequest(infoBasisArg: IDistributedTaskRequest): Promise<void>
}

View File

@ -1,6 +1,6 @@
import * as plugins from './taskbuffer.plugins.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 {
cronString: string;
@ -9,7 +9,7 @@ export interface ICronJob {
}
export interface ITaskManagerConstructorOptions {
distributedCoordinator?: DistributedCoordinator
distributedCoordinator?: AbstractDistributedCoordinator
}
export class TaskManager {
@ -89,7 +89,7 @@ export class TaskManager {
);
if (this.options.distributedCoordinator) {
console.log(`Found a distrubuted coordinator, performing distributed consultation.`);
const announcementResult = await this.options.distributedCoordinator.announceDistributedDecisionInfoBasis({
const announcementResult = await this.options.distributedCoordinator.fireDistributedTaskRequest({
submitterRandomId: this.randomId,
status: 'requesting',
taskExecutionParallel: 1,