2cf84adbc6bfd28e9d552795cbb3b49bbe8ffee4
1 import EventEmitter from
'events'
2 import type { AbstractPoolWorker
} from
'./abstract-pool-worker'
3 import type { IPool
} from
'./pool'
14 * Tasks usage statistics.
16 export interface TasksUsage
{
24 * Internal poolifier pool emitter.
26 export class PoolEmitter
extends EventEmitter
{}
29 * Internal contract definition for a poolifier pool.
31 * @template Worker Type of worker which manages this pool.
32 * @template Data Type of data sent to the worker.
33 * @template Response Type of response of execution.
35 export interface IPoolInternal
<
36 Worker
extends AbstractPoolWorker
,
39 > extends IPool
<Data
, Response
> {
41 * List of currently available workers.
43 readonly workers
: Worker
[]
46 * Emitter on which events can be listened to.
48 * Events that can currently be listened to:
52 readonly emitter
?: PoolEmitter
57 * If it is `'dynamic'`, it provides the `max` property.
59 readonly type: PoolType
62 * Maximum number of workers that can be created by this pool.
67 * Whether the pool is busy or not.
69 * The pool busyness boolean status.
71 readonly busy
: boolean
74 * Number of tasks currently concurrently running.
76 readonly numberOfRunningTasks
: number
79 * Find a free worker based on the number of tasks the worker has applied.
81 * If a worker is found with `0` running tasks, it is detected as free and returned.
83 * If no free worker is found, `false` is returned.
85 * @returns A free worker if there is one, otherwise `false`.
87 findFreeWorker(): Worker
| false
92 * @param worker The worker.
93 * @returns The worker index.
95 getWorkerIndex(worker
: Worker
): number
98 * Get worker running tasks.
100 * @param worker The worker.
101 * @returns The number of tasks currently running on the worker.
103 getWorkerRunningTasks(worker
: Worker
): number | undefined
106 * Get worker average tasks runtime.
108 * @param worker The worker.
109 * @returns The average tasks runtime on the worker.
111 getWorkerAverageTasksRunTime(worker
: Worker
): number | undefined