perf: use a single array to store pool workers and their related data
[poolifier.git] / src / pools / pool-worker.ts
index d46eda19c75cd51533562f06380a3a70cf8ef05e..e371e9c15fd7797b956023add35375eb04a326ac 100644 (file)
@@ -1,12 +1,3 @@
-import type { Worker as ClusterWorker } from 'cluster'
-import type { Worker as WorkerThread } from 'worker_threads'
-import type { Draft } from '../utility-types'
-
-/**
- * Poolifier supported worker type.
- */
-export type WorkerType = WorkerThread & ClusterWorker & Draft<MessageChannel>
-
 /**
  * Callback invoked if the worker has received a message.
  */
@@ -28,46 +19,24 @@ export type OnlineHandler<Worker> = (this: Worker) => void
 export type ExitHandler<Worker> = (this: Worker, code: number) => void
 
 /**
- * Basic interface that describes the minimum required implementation of listener events for a pool worker.
+ * Interface that describes the minimum required implementation of listener events for a pool worker.
  */
 export interface IPoolWorker {
   /**
-   * Worker identifier.
-   */
-  readonly id?: number
-  /**
-   * Register a listener to the message event.
-   *
-   * @param event `'message'`.
-   * @param handler The message handler.
-   */
-  on(event: 'message', handler: MessageHandler<this>): void
-  /**
-   * Register a listener to the error event.
-   *
-   * @param event `'error'`.
-   * @param handler The error handler.
-   */
-  on(event: 'error', handler: ErrorHandler<this>): void
-  /**
-   * Register a listener to the online event.
-   *
-   * @param event `'online'`.
-   * @param handler The online handler.
-   */
-  on(event: 'online', handler: OnlineHandler<this>): void
-  /**
-   * Register a listener to the exit event.
+   * Register an event listener.
    *
-   * @param event `'exit'`.
-   * @param handler The exit handler.
+   * @param event - The event.
+   * @param handler - The event listener.
    */
-  on(event: 'exit', handler: ExitHandler<this>): void
+  on: ((event: 'message', handler: MessageHandler<this>) => void) &
+  ((event: 'error', handler: ErrorHandler<this>) => void) &
+  ((event: 'online', handler: OnlineHandler<this>) => void) &
+  ((event: 'exit', handler: ExitHandler<this>) => void)
   /**
    * Register a listener to the exit event that will only performed once.
    *
-   * @param event `'exit'`.
-   * @param handler The exit handler.
+   * @param event `'exit'`.
+   * @param handler The exit handler.
    */
-  once(event: 'exit', handler: ExitHandler<this>): void
+  once: (event: 'exit', handler: ExitHandler<this>) => void
 }