repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
docs: enhance worker choice strategy option
[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 aa370fe433e74065e4155d8612499abef5ec59fb..31041f3a8783c605d237196f7e89920d04dd27bb 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,10
@@
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,36
+15,46
@@
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,
- Data,
- Response
+ Worker extends IWorker,
+ Data
= unknown
,
+ Response
= unknown
> implements IWorkerChoiceStrategy {
> implements IWorkerChoiceStrategy {
- /**
{@inheritDoc}
*/
- p
ublic
readonly isDynamicPool: boolean
- /**
{@inheritDoc}
*/
- public requiredStatistics: RequiredStatistics = {
+ /**
@inheritDoc
*/
+ p
rotected
readonly isDynamicPool: boolean
+ /**
@inheritDoc
*/
+ public re
adonly re
quiredStatistics: RequiredStatistics = {
runTime: false,
runTime: false,
- avgRunTime: false
+ avgRunTime: false,
+ medRunTime: false
}
/**
}
/**
- * Constructs a worker choice strategy
attache
d to the pool.
+ * Constructs a worker choice strategy
boun
d to the pool.
*
* @param pool - The pool instance.
*
* @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 = { medRunTime: false }
) {
) {
+ this.checkOptions()
this.isDynamicPool = this.pool.type === PoolType.DYNAMIC
this.choose.bind(this)
}
this.isDynamicPool = this.pool.type === PoolType.DYNAMIC
this.choose.bind(this)
}
- /** {@inheritDoc} */
+ private checkOptions (): void {
+ if (this.requiredStatistics.avgRunTime && this.opts.medRunTime === true) {
+ this.requiredStatistics.medRunTime = true
+ }
+ }
+
+ /** @inheritDoc */
public abstract reset (): boolean
public abstract reset (): boolean
- /**
{@inheritDoc}
*/
+ /**
@inheritDoc
*/
public abstract choose (): number
public abstract choose (): number
- /**
{@inheritDoc}
*/
- public abstract remove (workerKey: number): boolean
+ /**
@inheritDoc
*/
+ public abstract remove (worker
Node
Key: number): boolean
}
}