Commit | Line | Data |
---|---|---|
bdaf31cd JB |
1 | import type { IPoolInternal } from '../pool-internal' |
2 | import { PoolType } from '../pool-internal' | |
ea7a90d3 | 3 | import type { IPoolWorker } from '../pool-worker' |
10fcfaf4 JB |
4 | import type { |
5 | IWorkerChoiceStrategy, | |
6 | RequiredStatistics | |
7 | } from './selection-strategies-types' | |
bdaf31cd JB |
8 | |
9 | /** | |
10 | * Abstract worker choice strategy class. | |
11 | * | |
12 | * @template Worker Type of worker which manages the strategy. | |
13 | * @template Data Type of data sent to the worker. This can only be serializable data. | |
14 | * @template Response Type of response of execution. This can only be serializable data. | |
15 | */ | |
16 | export abstract class AbstractWorkerChoiceStrategy< | |
ea7a90d3 | 17 | Worker extends IPoolWorker, |
bdaf31cd JB |
18 | Data, |
19 | Response | |
20 | > implements IWorkerChoiceStrategy<Worker> { | |
a76fac14 | 21 | /** @inheritDoc */ |
ea7a90d3 | 22 | public readonly isDynamicPool: boolean = this.pool.type === PoolType.DYNAMIC |
10fcfaf4 JB |
23 | /** @inheritDoc */ |
24 | public requiredStatistics: RequiredStatistics = { | |
25 | runTime: false | |
26 | } | |
bdaf31cd JB |
27 | |
28 | /** | |
29 | * Constructs a worker choice strategy attached to the pool. | |
30 | * | |
31 | * @param pool The pool instance. | |
32 | */ | |
33 | public constructor ( | |
34 | protected readonly pool: IPoolInternal<Worker, Data, Response> | |
35 | ) {} | |
36 | ||
ea7a90d3 | 37 | /** @inheritDoc */ |
a6f7f1b4 | 38 | public abstract reset (): boolean |
ea7a90d3 | 39 | |
a76fac14 | 40 | /** @inheritDoc */ |
bdaf31cd JB |
41 | public abstract choose (): Worker |
42 | } |