- protected addWorker (worker: Worker): void {
- const previousWorkerIndex = this.tasks.get(worker)
- if (previousWorkerIndex !== undefined) {
- this.tasks.set(worker, previousWorkerIndex + 1)
+ /**
+ * Should return whether the worker is the main worker or not.
+ */
+ protected abstract isMain (): boolean
+
+ /**
+ * Increase the number of tasks that the given workers has done.
+ *
+ * @param worker Worker whose tasks are increased.
+ */
+ protected increaseWorkersTask (worker: Worker): void {
+ this.stepWorkerNumberOfTasks(worker, 1)
+ }
+
+ /**
+ * Decrease the number of tasks that the given workers has done.
+ *
+ * @param worker Worker whose tasks are decreased.
+ */
+ protected decreaseWorkersTasks (worker: Worker): void {
+ this.stepWorkerNumberOfTasks(worker, -1)
+ }
+
+ /**
+ * Step the number of tasks that the given workers has done.
+ *
+ * @param worker Worker whose tasks are set.
+ * @param step Worker number of tasks step.
+ */
+ private stepWorkerNumberOfTasks (worker: Worker, step: number): void {
+ const numberOfTasksInProgress = this.tasks.get(worker)
+ if (numberOfTasksInProgress !== undefined) {
+ this.tasks.set(worker, numberOfTasksInProgress + step)