- protected decreaseWorkersTasks (worker: Worker): void {
- this.stepWorkerNumberOfTasks(worker, -1)
- }
-
- /**
- * Step the number of tasks that the given worker has applied.
- *
- * @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)
- } else {
- throw Error('Worker could not be found in tasks map')
+ protected afterPromiseResponseHook (
+ workerKey: number,
+ message: MessageValue<Response>
+ ): void {
+ const workerTasksUsage = this.workers[workerKey].tasksUsage
+ --workerTasksUsage.running
+ ++workerTasksUsage.run
+ if (message.error != null) {
+ ++workerTasksUsage.error
+ }
+ if (
+ this.workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ .requiredStatistics.runTime
+ ) {
+ workerTasksUsage.runTime += message.taskRunTime ?? 0
+ if (workerTasksUsage.run !== 0) {
+ workerTasksUsage.avgRunTime =
+ workerTasksUsage.runTime / workerTasksUsage.run
+ }