1 import Constants from
'../utils/Constants';
2 import { WorkerData
} from
'../types/Worker';
4 export default abstract class WorkerAbstract
{
5 protected readonly workerScript
: string;
6 protected readonly workerStartDelay
: number;
7 protected readonly messageListener
: (message
: any) => void;
8 public abstract size
: number;
9 public abstract maxElementsPerWorker
: number | null;
12 * `WorkerAbstract` constructor.
15 * @param workerStartDelay
16 * @param messageListenerCallback
18 constructor(workerScript
: string, workerStartDelay
: number = Constants
.WORKER_START_DELAY
,
19 messageListenerCallback
: (message
: any) => void = () => { /* This is intentional */ }) {
20 this.workerScript
= workerScript
;
21 this.workerStartDelay
= workerStartDelay
;
22 this.messageListener
= messageListenerCallback
;
25 public abstract start(): Promise
<void>;
26 public abstract stop(): Promise
<void>;
27 public abstract addElement(elementData
: WorkerData
): Promise
<void>;