1 import { WorkerData
, WorkerStartOptions
} from
'../types/Worker';
3 import Constants from
'../utils/Constants';
5 export default abstract class WorkerAbstract
<T
extends WorkerData
> {
6 protected readonly workerScript
: string;
7 protected readonly workerStartDelay
: number;
8 protected readonly elementStartDelay
: number;
9 public abstract readonly size
: number;
10 public abstract readonly maxElementsPerWorker
: number | null;
13 * `WorkerAbstract` constructor.
16 * @param workerStartOptions
18 constructor(workerScript
: string, workerStartOptions
: WorkerStartOptions
= {
19 workerStartDelay
: Constants
.WORKER_START_DELAY
,
20 elementStartDelay
: Constants
.ELEMENT_START_DELAY
22 this.workerScript
= workerScript
;
23 this.workerStartDelay
= workerStartOptions
.workerStartDelay
;
24 this.elementStartDelay
= workerStartOptions
.elementStartDelay
;
27 public abstract start(): Promise
<void>;
28 public abstract stop(): Promise
<void>;
29 public abstract addElement(elementData
: T
): Promise
<void>;