median
} from '../utils'
import { KillBehaviors, isKillBehavior } from '../worker/worker-options'
+import { CircularArray } from '../circular-array'
import {
- PoolEvents,
type IPool,
+ PoolEmitter,
+ PoolEvents,
type PoolOptions,
- type TasksQueueOptions,
- PoolType
+ PoolType,
+ type TasksQueueOptions
} from './pool'
-import { PoolEmitter } from './pool'
import type { IWorker, Task, TasksUsage, WorkerNode } from './worker'
import {
WorkerChoiceStrategies,
type WorkerChoiceStrategyOptions
} from './selection-strategies/selection-strategies-types'
import { WorkerChoiceStrategyContext } from './selection-strategies/worker-choice-strategy-context'
-import { CircularArray } from '../circular-array'
/**
* Base class that implements some shared logic for all poolifier pools.
worker: Worker,
message: MessageValue<Response>
): void {
- const workerTasksUsage = this.getWorkerTasksUsage(worker) as TasksUsage
+ const workerTasksUsage = this.getWorkerTasksUsage(worker)
--workerTasksUsage.running
++workerTasksUsage.run
if (message.error != null) {
) {
// Kill message received from the worker: no new tasks are submitted to that worker for a while ( > maxInactiveTime)
this.flushTasksQueueByWorker(workerCreated)
- void this.destroyWorker(workerCreated)
+ void (this.destroyWorker(workerCreated) as Promise<void>)
}
})
workerNodeKey = this.getWorkerNodeKey(workerCreated)
* @throws Error if the worker is not found in the pool worker nodes.
* @returns The worker tasks usage.
*/
- private getWorkerTasksUsage (worker: Worker): TasksUsage | undefined {
+ private getWorkerTasksUsage (worker: Worker): TasksUsage {
const workerNodeKey = this.getWorkerNodeKey(worker)
if (workerNodeKey !== -1) {
return this.workerNodes[workerNodeKey].tasksUsage