1 import { WorkerData
, WorkerOptions
} 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 workerOptions
: WorkerOptions
;
8 public abstract readonly size
: number;
9 public abstract readonly maxElementsPerWorker
: number | null;
12 * `WorkerAbstract` constructor.
15 * @param workerOptions
17 constructor(workerScript
: string, workerOptions
: WorkerOptions
= {
18 workerStartDelay
: Constants
.WORKER_START_DELAY
,
19 elementStartDelay
: Constants
.ELEMENT_START_DELAY
,
20 poolMinSize
: Constants
.DEFAULT_WORKER_POOL_MIN_SIZE
,
21 poolMaxSize
: Constants
.DEFAULT_WORKER_POOL_MAX_SIZE
,
22 elementsPerWorker
: Constants
.DEFAULT_CHARGING_STATIONS_PER_WORKER
,
24 messageHandler
: () => { /* This is intentional */ }
26 this.workerScript
= workerScript
;
27 this.workerOptions
= workerOptions
;
30 public abstract start(): Promise
<void>;
31 public abstract stop(): Promise
<void>;
32 public abstract addElement(elementData
: T
): Promise
<void>;