X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fselection-strategies%2Fselection-strategies-utils.ts;h=f1f33d693996fedbe9862008f64e3e5eb46cdbfe;hb=daa307e54545706359aff24ef409a73eac4a4c11;hp=e76a699878289f85a8b2324bbeca729a3fcc0c0d;hpb=bdaf31cd0e637aa466c78d54a49f157899a2cb3f;p=poolifier.git diff --git a/src/pools/selection-strategies/selection-strategies-utils.ts b/src/pools/selection-strategies/selection-strategies-utils.ts index e76a6998..f1f33d69 100644 --- a/src/pools/selection-strategies/selection-strategies-utils.ts +++ b/src/pools/selection-strategies/selection-strategies-utils.ts @@ -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