repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: factor out worker choice strategies options default
[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..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,36
+16,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 = 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)
}
- /** {@inheritDoc} */
+ private checkOptions (opts: WorkerChoiceStrategyOptions): void {
+ if (this.requiredStatistics.avgRunTime && 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
}
}