import { Task } from './taskbuffer.classes.task.js'; import * as plugins from './taskbuffer.plugins.js'; /** * Contains all data for the final coordinator to make an informed decision. */ export interface IDistributedTaskRequest { submitterId: string; requestResponseId: string; taskName: string; taskVersion: string; taskExecutionTime: number; taskExecutionTimeout: number; taskExecutionParallel: number; status: 'requesting' | 'gotRejected' | 'failed' | 'succeeded'; } export interface IDistributedTaskRequestResult { submitterId: string; requestResponseId: string; considered: boolean; rank: number; reason: string; shouldTrigger: boolean; } export abstract class AbstractDistributedCoordinator { public abstract fireDistributedTaskRequest( infoBasis: IDistributedTaskRequest ): Promise; public abstract updateDistributedTaskRequest( infoBasis: IDistributedTaskRequest ): Promise; public abstract start(): Promise; public abstract stop(): Promise; }