Commit | Line | Data |
---|---|---|
4bfd80fa JB |
1 | import { WorkerData, WorkerStartOptions } from '../types/Worker'; |
2 | ||
322c9192 | 3 | import Constants from '../utils/Constants'; |
7dde0b73 | 4 | |
c3ee95af | 5 | export default abstract class WorkerAbstract<T extends WorkerData> { |
322c9192 JB |
6 | protected readonly workerScript: string; |
7 | protected readonly workerStartDelay: number; | |
4bfd80fa | 8 | protected readonly elementStartDelay: number; |
f2bf9948 JB |
9 | public abstract readonly size: number; |
10 | public abstract readonly maxElementsPerWorker: number | null; | |
6af9012e | 11 | |
7dde0b73 | 12 | /** |
e71cccf3 | 13 | * `WorkerAbstract` constructor. |
7dde0b73 | 14 | * |
81797102 | 15 | * @param workerScript |
4bfd80fa | 16 | * @param workerStartOptions |
7dde0b73 | 17 | */ |
4bfd80fa JB |
18 | constructor(workerScript: string, workerStartOptions: WorkerStartOptions = { |
19 | workerStartDelay: Constants.WORKER_START_DELAY, | |
20 | elementStartDelay: Constants.ELEMENT_START_DELAY | |
21 | }) { | |
ad2f27c3 | 22 | this.workerScript = workerScript; |
4bfd80fa JB |
23 | this.workerStartDelay = workerStartOptions.workerStartDelay; |
24 | this.elementStartDelay = workerStartOptions.elementStartDelay; | |
7dde0b73 JB |
25 | } |
26 | ||
418106c8 | 27 | public abstract start(): Promise<void>; |
ded13d97 | 28 | public abstract stop(): Promise<void>; |
c3ee95af | 29 | public abstract addElement(elementData: T): Promise<void>; |
7dde0b73 | 30 | } |