import type { IPool } from '../pool.js'
-import {
- buildWorkerChoiceStrategyOptions,
- DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS
-} from '../utils.js'
+import { DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS } from '../utils.js'
import type { IWorker } from '../worker.js'
import type {
IWorkerChoiceStrategy,
- MeasurementStatisticsRequirements,
StrategyPolicy,
TaskStatisticsRequirements,
- WorkerChoiceStrategyOptions
+ WorkerChoiceStrategyOptions,
} from './selection-strategies-types.js'
+import {
+ buildWorkerChoiceStrategyOptions,
+ toggleMedianMeasurementStatisticsRequirements,
+} from './selection-strategies-utils.js'
/**
* Worker choice strategy abstract base class.
- *
* @typeParam Worker - Type of worker which manages the strategy.
* @typeParam Data - Type of data sent to the worker. This can only be structured-cloneable data.
* @typeParam Response - Type of execution response. This can only be structured-cloneable data.
/** @inheritDoc */
public readonly strategyPolicy: StrategyPolicy = {
dynamicWorkerUsage: false,
- dynamicWorkerReady: true
+ dynamicWorkerReady: true,
}
/** @inheritDoc */
public readonly taskStatisticsRequirements: TaskStatisticsRequirements = {
runTime: DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS,
waitTime: DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS,
- elu: DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS
+ elu: DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS,
}
/**
* Constructs a worker choice strategy bound to the pool.
- *
* @param pool - The pool instance.
* @param opts - The worker choice strategy options.
*/
protected setTaskStatisticsRequirements (
opts: WorkerChoiceStrategyOptions | undefined
): void {
- this.toggleMedianMeasurementStatisticsRequirements(
+ toggleMedianMeasurementStatisticsRequirements(
this.taskStatisticsRequirements.runTime,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
opts!.runTime!.median
)
- this.toggleMedianMeasurementStatisticsRequirements(
+ toggleMedianMeasurementStatisticsRequirements(
this.taskStatisticsRequirements.waitTime,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
opts!.waitTime!.median
)
- this.toggleMedianMeasurementStatisticsRequirements(
+ toggleMedianMeasurementStatisticsRequirements(
this.taskStatisticsRequirements.elu,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
opts!.elu!.median
)
}
- private toggleMedianMeasurementStatisticsRequirements (
- measurementStatisticsRequirements: MeasurementStatisticsRequirements,
- toggleMedian: boolean
- ): void {
- if (measurementStatisticsRequirements.average && toggleMedian) {
- measurementStatisticsRequirements.average = false
- measurementStatisticsRequirements.median = toggleMedian
- }
- if (measurementStatisticsRequirements.median && !toggleMedian) {
- measurementStatisticsRequirements.average = true
- measurementStatisticsRequirements.median = toggleMedian
- }
- }
-
protected resetWorkerNodeKeyProperties (): void {
this.nextWorkerNodeKey = 0
this.previousWorkerNodeKey = 0
/**
* Whether the worker node is ready or not.
- *
* @param workerNodeKey - The worker node key.
* @returns Whether the worker node is ready or not.
*/
/**
* Gets the worker node task runtime.
* If the task statistics require the average runtime, the average runtime is returned.
- * If the task statistics require the median runtime , the median runtime is returned.
- *
+ * If the task statistics require the median runtime, the median runtime is returned.
* @param workerNodeKey - The worker node key.
* @returns The worker node task runtime.
*/
* Gets the worker node task wait time.
* If the task statistics require the average wait time, the average wait time is returned.
* If the task statistics require the median wait time, the median wait time is returned.
- *
* @param workerNodeKey - The worker node key.
* @returns The worker node task wait time.
*/
* Gets the worker node task ELU.
* If the task statistics require the average ELU, the average ELU is returned.
* If the task statistics require the median ELU, the median ELU is returned.
- *
* @param workerNodeKey - The worker node key.
* @returns The worker node task ELU.
*/
/**
* Sets safely the previous worker node key.
- *
* @param workerNodeKey - The worker node key.
*/
protected setPreviousWorkerNodeKey (workerNodeKey: number | undefined): void {