/// import { StorageType } from './../common/types'; import { WorkerClient } from '../worker/WorkerClient'; import { Request, Response } from '../client/Client'; import { SerializedFunction } from '../common/SerializeFunction'; declare type InArgs = { type: 'value' | 'partitions' | 'parts'; args?: any[]; partitions?: string[]; parts?: string[][]; }; declare type OutArgs = { type: 'reduce' | 'partitions' | 'parts' | 'saveFile'; storageType?: StorageType; saveFunc?: SerializedFunction<(data: any[], filename: string) => void | Promise>; partitionFunc?: SerializedFunction<(v: any[], arg: any, partitionIndex: number) => any[][]>; args?: any[]; }; declare type Partition = [number, string]; declare type CacheRecord = { storageType: StorageType; partitions: Partition[]; }; export interface FileLoader { canHandleUrl(baseUrl: string, type: 'load' | 'save'): boolean | Promise; listFiles(baseUrl: string, recursive?: boolean): string[] | Promise; createDataLoader(baseUrl: string): SerializedFunction<(filename: string) => Buffer | Promise>; initSaveProgress(baseUrl: string, overwrite?: boolean): void | Promise; createDataSaver(baseUrl: string): SerializedFunction<(filename: string, buffer: Buffer) => void | Promise>; markSaveSuccess(baseUrl: string): void | Promise; } interface TaskDetail { index: number; total: number; } export declare class MasterServer { workers: WorkerClient[]; caches: CacheRecord[]; cacheIdCounter: number; fileLoaderRegistry: FileLoader[]; constructor(); registerFileLoader(loader: FileLoader): void; init(): Promise; dispose(): Promise; send(m: Response): void; onTaskBegin(task: TaskDetail, progressTotal: number): void; processRequest(m: Request): Promise; getSplitIndecies(count: number): number[][]; splitByWorker(args: T[]): T[][]; mergeWorkerResult(resps: T[][]): T[]; finalWork(ins: InArgs[], indecies: number[][], out: OutArgs | OutArgs[], mappers: SerializedFunction<(arg: any, partitionIndex: number) => any>[], task: TaskDetail, progressTotal: number): Promise; createRDD(args: any[], out: OutArgs | OutArgs[], mappers: SerializedFunction<(arg: any, partitionIndex: number) => any>[], task: TaskDetail): Promise; addCache(storageType: StorageType, partitions: Partition[]): number; loadCache(id: number, out: OutArgs | OutArgs[], mappers: SerializedFunction<(arg: any, partitionIndex: number) => any>[], task: TaskDetail): Promise; releaseCache(id: number): Promise; joinPieces(numPartitions: number, parts: string[][], out: OutArgs | OutArgs[], mappers: SerializedFunction<(arg: any, partitionIndex: number) => any>[], task: TaskDetail): Promise; getPartitionCount(dependWork: Request): Promise; getFileLoader(baseUrl: string, type: 'load' | 'save'): Promise; loadFile(baseUrl: string, recursive: boolean, out: OutArgs | OutArgs[], mappers: SerializedFunction<(arg: any, partitionIndex: number) => any>[], task: TaskDetail): Promise; getTaskDetail(dependWork: Request, out?: TaskDetail): TaskDetail; runWork(dependWork: Request, out: OutArgs | OutArgs[], mappers?: SerializedFunction<(arg: any, partitionIndex: number) => any>[], task?: TaskDetail): Promise; } export {};