Merge pull request #878 from poolifier/dependabot/npm_and_yarn/examples/typescript...
[poolifier.git] / src / pools / pool.ts
index 26ca4c03279ad9969df3940141cf0bade3b815b4..09d2f229c5bbf02baf00172c494efa3d9df23584 100644 (file)
@@ -79,6 +79,7 @@ export interface PoolInfo {
   readonly executingTasks: number
   readonly queuedTasks?: number
   readonly maxQueuedTasks?: number
+  readonly backPressure?: boolean
   readonly failedTasks: number
   readonly runTime?: {
     readonly minimum: number
@@ -178,8 +179,18 @@ export interface IPool<
   readonly info: PoolInfo
   /**
    * Pool worker nodes.
+   *
+   * @internal
    */
   readonly workerNodes: Array<IWorkerNode<Worker, Data>>
+  /**
+   * Whether the worker node has back pressure (i.e. its tasks queue is full).
+   *
+   * @param workerNodeKey - The worker node key.
+   * @returns `true` if the worker node has back pressure, `false` otherwise.
+   * @internal
+   */
+  readonly hasWorkerNodeBackPressure: (workerNodeKey: number) => boolean
   /**
    * Emitter on which events can be listened to.
    *
@@ -191,6 +202,7 @@ export interface IPool<
    * - '`destroy`': Emitted when the pool is destroyed.
    * - `'error'`: Emitted when an uncaught error occurs.
    * - `'taskError'`: Emitted when an error occurs while executing a task.
+   * - `'backPressure'`: Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size \>= pool maximum size^2).
    */
   readonly emitter?: PoolEmitter
   /**