-import {
- DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS,
- DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
-} from '../../utils'
+import { DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS } from '../../utils'
import type { IPool } from '../pool'
import type { IWorker, StrategyData } from '../worker'
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy'
import {
type IWorkerChoiceStrategy,
+ type InternalWorkerChoiceStrategyOptions,
Measurements,
- type TaskStatisticsRequirements,
- type WorkerChoiceStrategyOptions
+ type TaskStatisticsRequirements
} from './selection-strategies-types'
/**
/** @inheritDoc */
public constructor (
pool: IPool<Worker, Data, Response>,
- opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
+ opts: InternalWorkerChoiceStrategyOptions
) {
super(pool, opts)
this.setTaskStatisticsRequirements(this.opts)
this.computeWorkerNodeVirtualTaskEndTimestamp(workerNodeKey)
}
}
- return (workerNode.strategyData.virtualTaskEndTimestamp as number) <
- ((workerNodes[minWorkerNodeKey].strategyData as StrategyData)
- .virtualTaskEndTimestamp as number)
+ return this.isWorkerNodeReady(workerNodeKey) &&
+ (workerNode.strategyData.virtualTaskEndTimestamp as number) <
+ ((workerNodes[minWorkerNodeKey].strategyData as StrategyData)
+ .virtualTaskEndTimestamp as number)
? workerNodeKey
: minWorkerNodeKey
},
private getWorkerNodeVirtualTaskStartTimestamp (
workerNodeKey: number
): number {
+ const virtualTaskEndTimestamp =
+ this.pool.workerNodes[workerNodeKey]?.strategyData
+ ?.virtualTaskEndTimestamp
const now = performance.now()
- return now <
- (this.pool.workerNodes[workerNodeKey]?.strategyData
- ?.virtualTaskEndTimestamp ?? -Infinity)
- ? (this.pool.workerNodes[workerNodeKey]?.strategyData
- ?.virtualTaskEndTimestamp as number)
+ return now < (virtualTaskEndTimestamp ?? -Infinity)
+ ? (virtualTaskEndTimestamp as number)
: now
}
}