feat: add pool runtime setters
[poolifier.git] / src / pools / selection-strategies / abstract-worker-choice-strategy.ts
index 77b44f6e344547154a0091ca8f17a82bdf1a7cb2..859ead823bc233c6e251eb004e7d6fb0563459e6 100644 (file)
@@ -36,7 +36,7 @@ export abstract class AbstractWorkerChoiceStrategy<
    */
   public constructor (
     protected readonly pool: IPool<Worker, Data, Response>,
-    protected readonly opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
+    protected opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
   ) {
     this.isDynamicPool = this.pool.type === PoolType.DYNAMIC
     this.choose.bind(this)
@@ -47,6 +47,10 @@ export abstract class AbstractWorkerChoiceStrategy<
       this.requiredStatistics.avgRunTime = false
       this.requiredStatistics.medRunTime = opts.medRunTime as boolean
     }
+    if (this.requiredStatistics.medRunTime && opts.medRunTime === false) {
+      this.requiredStatistics.avgRunTime = true
+      this.requiredStatistics.medRunTime = opts.medRunTime as boolean
+    }
   }
 
   /** @inheritDoc */
@@ -57,4 +61,10 @@ export abstract class AbstractWorkerChoiceStrategy<
 
   /** @inheritDoc */
   public abstract remove (workerNodeKey: number): boolean
+
+  /** @inheritDoc */
+  public setOptions (opts: WorkerChoiceStrategyOptions): void {
+    this.checkOptions(opts)
+    this.opts = opts
+  }
 }