///
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;
}