- protected removeWorker (worker: Worker): void {
- const workerKey = this.getWorkerKey(worker)
- this.workers.splice(workerKey, 1)
- this.workerChoiceStrategyContext.remove(workerKey)
+ private removeWorkerNode (worker: Worker): void {
+ const workerNodeKey = this.getWorkerNodeKey(worker)
+ this.workerNodes.splice(workerNodeKey, 1)
+ this.workerChoiceStrategyContext.remove(workerNodeKey)
+ }
+
+ private executeTask (workerNodeKey: number, task: Task<Data>): void {
+ this.beforeTaskExecutionHook(workerNodeKey)
+ this.sendToWorker(this.workerNodes[workerNodeKey].worker, task)
+ }
+
+ private enqueueTask (workerNodeKey: number, task: Task<Data>): void {
+ this.workerNodes[workerNodeKey].tasksQueue.push(task)
+ }
+
+ private dequeueTask (workerNodeKey: number): Task<Data> | undefined {
+ return this.workerNodes[workerNodeKey].tasksQueue.shift()
+ }
+
+ private tasksQueueSize (workerNodeKey: number): number {
+ return this.workerNodes[workerNodeKey].tasksQueue.length
+ }
+
+ private flushTasksQueue (workerNodeKey: number): void {
+ if (this.tasksQueueSize(workerNodeKey) > 0) {
+ for (const task of this.workerNodes[workerNodeKey].tasksQueue) {
+ this.executeTask(workerNodeKey, task)
+ }
+ }
+ }
+
+ private flushTasksQueueByWorker (worker: Worker): void {
+ const workerNodeKey = this.getWorkerNodeKey(worker)
+ this.flushTasksQueue(workerNodeKey)