CHANGELOG.md: update
[poolifier.git] / src / pools / selection-strategies / selection-strategies-utils.ts
index e76a699878289f85a8b2324bbeca729a3fcc0c0d..f1f33d693996fedbe9862008f64e3e5eb46cdbfe 100644 (file)
@@ -1,5 +1,6 @@
-import type { AbstractPoolWorker } from '../abstract-pool-worker'
 import type { IPoolInternal } from '../pool-internal'
+import type { IPoolWorker } from '../pool-worker'
+import { FairShareWorkerChoiceStrategy } from './fair-share-worker-choice-strategy'
 import { LessRecentlyUsedWorkerChoiceStrategy } from './less-recently-used-worker-choice-strategy'
 import { RoundRobinWorkerChoiceStrategy } from './round-robin-worker-choice-strategy'
 import type {
@@ -7,20 +8,21 @@ import type {
   WorkerChoiceStrategy
 } from './selection-strategies-types'
 import { WorkerChoiceStrategies } from './selection-strategies-types'
+import { WeightedRoundRobinWorkerChoiceStrategy } from './weighted-round-robin-worker-choice-strategy'
 
 /**
  * Worker selection strategies helpers class.
  */
 export class SelectionStrategiesUtils {
   /**
-   * Get the worker choice strategy instance.
+   * Gets the worker choice strategy instance.
    *
    * @param pool The pool instance.
    * @param workerChoiceStrategy The worker choice strategy.
    * @returns The worker choice strategy instance.
    */
   public static getWorkerChoiceStrategy<
-    Worker extends AbstractPoolWorker,
+    Worker extends IPoolWorker,
     Data,
     Response
   > (
@@ -32,6 +34,10 @@ export class SelectionStrategiesUtils {
         return new RoundRobinWorkerChoiceStrategy(pool)
       case WorkerChoiceStrategies.LESS_RECENTLY_USED:
         return new LessRecentlyUsedWorkerChoiceStrategy(pool)
+      case WorkerChoiceStrategies.FAIR_SHARE:
+        return new FairShareWorkerChoiceStrategy(pool)
+      case WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN:
+        return new WeightedRoundRobinWorkerChoiceStrategy(pool)
       default:
         throw new Error(
           // eslint-disable-next-line @typescript-eslint/restrict-template-expressions