perf: factor out strategies helper
[poolifier.git] / src / pools / selection-strategies / selection-strategies-utils.ts
index 777be6e4d4a2be104afd7986bd835e7e04312e96..6e63f781dd0da7b1d0185dda8aa2b2243c451dc7 100644 (file)
@@ -10,6 +10,7 @@ import { LeastUsedWorkerChoiceStrategy } from './least-used-worker-choice-strate
 import { RoundRobinWorkerChoiceStrategy } from './round-robin-worker-choice-strategy.js'
 import {
   type IWorkerChoiceStrategy,
+  type MeasurementStatisticsRequirements,
   type StrategyPolicy,
   type TaskStatisticsRequirements,
   WorkerChoiceStrategies,
@@ -100,6 +101,20 @@ export const buildWorkerChoiceStrategyOptions = <
   }
 }
 
+export const 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
+  }
+}
+
 export const buildWorkerChoiceStrategiesPolicy = (
   workerChoiceStrategies: Map<WorkerChoiceStrategy, IWorkerChoiceStrategy>
 ): StrategyPolicy => {