/// import * as cluster from "cluster"; import { IScheduler } from "./scheduler"; import { ITask } from "./task"; export interface IClusterSchedulerOptions { verbose?: boolean; maxAllocations?: number; } export interface IWorkerRecord { workerIndex: number; workerId: string; allocations: number; maxAllocations: number; worker: cluster.Worker; } export interface IWorkerMap { [index: string]: IWorkerRecord; } export interface ITaskRecord { inputs: any[]; taskId: string; taskName: string; resolve: (result: any) => void; reject: (error: any) => void; } export interface ITaskMap { [index: string]: ITaskRecord; } export declare class ClusterScheduler implements IScheduler { private enableVerboseLogging; private maxAllocations; private numWorkers; private workers; private workerMap; private taskQueue; private pendingTasks; private whoami; constructor(numWorkers: number, options?: IClusterSchedulerOptions); init(mainFn: () => Promise): Promise; runTask(inputs: any[], task: ITask): Promise; private sendTask; private queueTask; private verbose; private trackWorker; private initWorker; private scheduleTask; private scheduleTasks; private shutdownWorkers; }