docs: enhance documentation
[poolifier.git] / src / pools / selection-strategies / worker-choice-strategy-context.ts
index 0e5fd5468e32195fce4589562c97f3bc15e8aefd..91441ace5a58d8ca6756a21b679a3dd13b73df55 100644 (file)
@@ -1,4 +1,5 @@
-import type { IPoolInternal } from '../pool-internal'
+import { DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS } from '../../utils'
+import type { IPool } from '../pool'
 import type { IWorker } from '../worker'
 import { FairShareWorkerChoiceStrategy } from './fair-share-worker-choice-strategy'
 import { LessBusyWorkerChoiceStrategy } from './less-busy-worker-choice-strategy'
@@ -7,7 +8,8 @@ import { RoundRobinWorkerChoiceStrategy } from './round-robin-worker-choice-stra
 import type {
   IWorkerChoiceStrategy,
   RequiredStatistics,
-  WorkerChoiceStrategy
+  WorkerChoiceStrategy,
+  WorkerChoiceStrategyOptions
 } from './selection-strategies-types'
 import { WorkerChoiceStrategies } from './selection-strategies-types'
 import { WeightedRoundRobinWorkerChoiceStrategy } from './weighted-round-robin-worker-choice-strategy'
@@ -17,7 +19,7 @@ import { WeightedRoundRobinWorkerChoiceStrategy } from './weighted-round-robin-w
  *
  * @typeParam Worker - Type of worker.
  * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of response of execution. This can only be serializable data.
+ * @typeParam Response - Type of execution response. This can only be serializable data.
  */
 export class WorkerChoiceStrategyContext<
   Worker extends IWorker,
@@ -34,10 +36,12 @@ export class WorkerChoiceStrategyContext<
    *
    * @param pool - The pool instance.
    * @param workerChoiceStrategyType - The worker choice strategy.
+   * @param opts - The worker choice strategy options.
    */
   public constructor (
-    pool: IPoolInternal<Worker, Data, Response>,
-    private workerChoiceStrategyType: WorkerChoiceStrategy = WorkerChoiceStrategies.ROUND_ROBIN
+    pool: IPool<Worker, Data, Response>,
+    private workerChoiceStrategyType: WorkerChoiceStrategy = WorkerChoiceStrategies.ROUND_ROBIN,
+    opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
   ) {
     this.execute.bind(this)
     this.workerChoiceStrategies = new Map<
@@ -46,23 +50,26 @@ export class WorkerChoiceStrategyContext<
     >([
       [
         WorkerChoiceStrategies.ROUND_ROBIN,
-        new RoundRobinWorkerChoiceStrategy<Worker, Data, Response>(pool)
+        new RoundRobinWorkerChoiceStrategy<Worker, Data, Response>(pool, opts)
       ],
       [
         WorkerChoiceStrategies.LESS_USED,
-        new LessUsedWorkerChoiceStrategy<Worker, Data, Response>(pool)
+        new LessUsedWorkerChoiceStrategy<Worker, Data, Response>(pool, opts)
       ],
       [
         WorkerChoiceStrategies.LESS_BUSY,
-        new LessBusyWorkerChoiceStrategy<Worker, Data, Response>(pool)
+        new LessBusyWorkerChoiceStrategy<Worker, Data, Response>(pool, opts)
       ],
       [
         WorkerChoiceStrategies.FAIR_SHARE,
-        new FairShareWorkerChoiceStrategy<Worker, Data, Response>(pool)
+        new FairShareWorkerChoiceStrategy<Worker, Data, Response>(pool, opts)
       ],
       [
         WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN,
-        new WeightedRoundRobinWorkerChoiceStrategy<Worker, Data, Response>(pool)
+        new WeightedRoundRobinWorkerChoiceStrategy<Worker, Data, Response>(
+          pool,
+          opts
+        )
       ]
     ])
   }