1 import type { AbstractPoolWorker
} from
'../abstract-pool-worker'
2 import type { IPoolInternal
} from
'../pool-internal'
3 import { LessRecentlyUsedWorkerChoiceStrategy
} from
'./less-recently-used-worker-choice-strategy'
4 import { RoundRobinWorkerChoiceStrategy
} from
'./round-robin-worker-choice-strategy'
8 } from
'./selection-strategies-types'
9 import { WorkerChoiceStrategies
} from
'./selection-strategies-types'
12 * Worker selection strategies helpers class.
14 export class SelectionStrategiesUtils
{
16 * Get the worker choice strategy instance.
18 * @param pool The pool instance.
19 * @param workerChoiceStrategy The worker choice strategy.
20 * @returns The worker choice strategy instance.
22 public static getWorkerChoiceStrategy
<
23 Worker
extends AbstractPoolWorker
,
27 pool
: IPoolInternal
<Worker
, Data
, Response
>,
28 workerChoiceStrategy
: WorkerChoiceStrategy
= WorkerChoiceStrategies
.ROUND_ROBIN
29 ): IWorkerChoiceStrategy
<Worker
> {
30 switch (workerChoiceStrategy
) {
31 case WorkerChoiceStrategies
.ROUND_ROBIN
:
32 return new RoundRobinWorkerChoiceStrategy(pool
)
33 case WorkerChoiceStrategies
.LESS_RECENTLY_USED
:
34 return new LessRecentlyUsedWorkerChoiceStrategy(pool
)
37 // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
38 `Worker choice strategy '${workerChoiceStrategy}' not found`