forked from projectmoon/tenebrous-dicebot
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
|
/**
|
||
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*/
|
||
|
import { FarmOptions, PromiseWithCustomMessage, TaskQueue } from './types';
|
||
|
export default class Farm {
|
||
|
private _numOfWorkers;
|
||
|
private _callback;
|
||
|
private readonly _computeWorkerKey;
|
||
|
private readonly _workerSchedulingPolicy;
|
||
|
private readonly _cacheKeys;
|
||
|
private readonly _locks;
|
||
|
private _offset;
|
||
|
private readonly _taskQueue;
|
||
|
constructor(_numOfWorkers: number, _callback: Function, options?: {
|
||
|
computeWorkerKey?: FarmOptions['computeWorkerKey'];
|
||
|
workerSchedulingPolicy?: FarmOptions['workerSchedulingPolicy'];
|
||
|
taskQueue?: TaskQueue;
|
||
|
});
|
||
|
doWork(method: string, ...args: Array<unknown>): PromiseWithCustomMessage<unknown>;
|
||
|
private _process;
|
||
|
private _push;
|
||
|
private _getNextWorkerOffset;
|
||
|
private _lock;
|
||
|
private _unlock;
|
||
|
private _isLocked;
|
||
|
}
|