-import type { AbstractPoolWorker } from '../abstract-pool-worker'
+import type { IPoolWorker } from '../pool-worker'
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy'
/**
* Selects the less recently used worker.
*
- * @template Worker Type of worker which manages the strategy.
- * @template Data Type of data sent to the worker. This can only be serializable data.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker which manages the strategy.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @typeParam Response - Type of response of execution. This can only be serializable data.
*/
export class LessRecentlyUsedWorkerChoiceStrategy<
- Worker extends AbstractPoolWorker,
+ Worker extends IPoolWorker,
Data,
Response
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response> {
- /** @inheritDoc */
+ /** {@inheritDoc} */
+ public reset (): boolean {
+ return true
+ }
+
+ /** {@inheritDoc} */
public choose (): Worker {
let minNumberOfRunningTasks = Infinity
// A worker is always found because it picks the one with fewer tasks
const workerRunningTasks = this.pool.getWorkerRunningTasks(
worker
) as number
- if (this.isDynamicPool === false && workerRunningTasks === 0) {
+ if (!this.isDynamicPool && workerRunningTasks === 0) {
return worker
} else if (workerRunningTasks < minNumberOfRunningTasks) {
lessRecentlyUsedWorker = worker