feat: introduce worker node queue back pressure detection
[poolifier.git] / src / pools / pool.ts
index 0bde23befc95521132d619c5d2299008bf9ddd81..26ca4c03279ad9969df3940141cf0bade3b815b4 100644 (file)
@@ -42,11 +42,13 @@ export class PoolEmitter extends EventEmitter {}
  * Enumeration of pool events.
  */
 export const PoolEvents = Object.freeze({
-  full: 'full',
   ready: 'ready',
   busy: 'busy',
+  full: 'full',
+  destroy: 'destroy',
   error: 'error',
-  taskError: 'taskError'
+  taskError: 'taskError',
+  backPressure: 'backPressure'
 } as const)
 
 /**
@@ -110,6 +112,10 @@ export interface TasksQueueOptions {
  * @typeParam Worker - Type of worker.
  */
 export interface PoolOptions<Worker extends IWorker> {
+  /**
+   * A function that will listen for online event on each worker.
+   */
+  onlineHandler?: OnlineHandler<Worker>
   /**
    * A function that will listen for message event on each worker.
    */
@@ -118,10 +124,6 @@ export interface PoolOptions<Worker extends IWorker> {
    * A function that will listen for error event on each worker.
    */
   errorHandler?: ErrorHandler<Worker>
-  /**
-   * A function that will listen for online event on each worker.
-   */
-  onlineHandler?: OnlineHandler<Worker>
   /**
    * A function that will listen for exit event on each worker.
    */
@@ -183,9 +185,10 @@ export interface IPool<
    *
    * Events that can currently be listened to:
    *
-   * - `'full'`: Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
    * - `'ready'`: Emitted when the number of workers created in the pool has reached the minimum size expected and are ready.
    * - `'busy'`: Emitted when the number of workers created in the pool has reached the maximum size expected and are executing at least one task.
+   * - `'full'`: Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
+   * - '`destroy`': Emitted when the pool is destroyed.
    * - `'error'`: Emitted when an uncaught error occurs.
    * - `'taskError'`: Emitted when an error occurs while executing a task.
    */