repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:poolifier/poolifier
[poolifier.git]
/
src
/
pools
/
selection-strategies
/
abstract-worker-choice-strategy.ts
diff --git
a/src/pools/selection-strategies/abstract-worker-choice-strategy.ts
b/src/pools/selection-strategies/abstract-worker-choice-strategy.ts
index b0a624da9d5afb7b563d2a069e2b04866b02163a..d60d2905674e5b6fc5baa66616a63e9ab9f1fc85 100644
(file)
--- a/
src/pools/selection-strategies/abstract-worker-choice-strategy.ts
+++ b/
src/pools/selection-strategies/abstract-worker-choice-strategy.ts
@@
-1,9
+1,11
@@
+import { DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS } from '../../utils'
import type { IPoolInternal } from '../pool-internal'
import { PoolType } from '../pool-internal'
import type { IPoolInternal } from '../pool-internal'
import { PoolType } from '../pool-internal'
-import type { I
PoolWorker } from '../pool-
worker'
+import type { I
Worker } from '../
worker'
import type {
IWorkerChoiceStrategy,
import type {
IWorkerChoiceStrategy,
- RequiredStatistics
+ RequiredStatistics,
+ WorkerChoiceStrategyOptions
} from './selection-strategies-types'
/**
} from './selection-strategies-types'
/**
@@
-14,30
+16,40
@@
import type {
* @typeParam Response - Type of response of execution. This can only be serializable data.
*/
export abstract class AbstractWorkerChoiceStrategy<
* @typeParam Response - Type of response of execution. This can only be serializable data.
*/
export abstract class AbstractWorkerChoiceStrategy<
- Worker extends I
Pool
Worker,
+ Worker extends IWorker,
Data = unknown,
Response = unknown
> implements IWorkerChoiceStrategy {
/** @inheritDoc */
protected readonly isDynamicPool: boolean
/** @inheritDoc */
Data = unknown,
Response = unknown
> implements IWorkerChoiceStrategy {
/** @inheritDoc */
protected readonly isDynamicPool: boolean
/** @inheritDoc */
- public requiredStatistics: RequiredStatistics = {
+ public re
adonly re
quiredStatistics: RequiredStatistics = {
runTime: false,
runTime: false,
- avgRunTime: false
+ avgRunTime: false,
+ medRunTime: false
}
/**
* Constructs a worker choice strategy bound to the pool.
*
* @param pool - The pool instance.
}
/**
* Constructs a worker choice strategy bound to the pool.
*
* @param pool - The pool instance.
+ * @param opts - The worker choice strategy options.
*/
public constructor (
*/
public constructor (
- protected readonly pool: IPoolInternal<Worker, Data, Response>
+ protected readonly pool: IPoolInternal<Worker, Data, Response>,
+ protected readonly opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
) {
) {
+ this.checkOptions(this.opts)
this.isDynamicPool = this.pool.type === PoolType.DYNAMIC
this.choose.bind(this)
}
this.isDynamicPool = this.pool.type === PoolType.DYNAMIC
this.choose.bind(this)
}
+ private checkOptions (opts: WorkerChoiceStrategyOptions): void {
+ if (this.requiredStatistics.avgRunTime && opts.medRunTime === true) {
+ this.requiredStatistics.medRunTime = true
+ }
+ }
+
/** @inheritDoc */
public abstract reset (): boolean
/** @inheritDoc */
public abstract reset (): boolean
@@
-45,5
+57,5
@@
export abstract class AbstractWorkerChoiceStrategy<
public abstract choose (): number
/** @inheritDoc */
public abstract choose (): number
/** @inheritDoc */
- public abstract remove (workerKey: number): boolean
+ public abstract remove (worker
Node
Key: number): boolean
}
}