refactor: cleanup worker message listener implementation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 6 Oct 2023 19:53:13 +0000 (21:53 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 6 Oct 2023 19:53:13 +0000 (21:53 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/pools/abstract-pool.ts

index f1d8b058ca414c136f71fc92be19ba7d352e7664..628ad32ff8bac28bfb71a4355e79f7c7594e2236 100644 (file)
@@ -72,6 +72,11 @@ export abstract class AbstractPool<
   /** @inheritDoc */
   public emitter?: EventEmitterAsyncResource
 
+  /**
+   * Dynamic pool maximum size property placeholder.
+   */
+  protected readonly max?: number
+
   /**
    * The task execution response promise map:
    * - `key`: The message id of each submitted task.
@@ -91,11 +96,6 @@ export abstract class AbstractPool<
   Response
   >
 
-  /**
-   * Dynamic pool maximum size property placeholder.
-   */
-  protected readonly max?: number
-
   /**
    * The task functions added at runtime map:
    * - `key`: The task function name.
@@ -1343,7 +1343,10 @@ export abstract class AbstractPool<
    */
   protected afterWorkerNodeSetup (workerNodeKey: number): void {
     // Listen to worker messages.
-    this.registerWorkerMessageListener(workerNodeKey, this.workerListener())
+    this.registerWorkerMessageListener(
+      workerNodeKey,
+      this.workerMessageListener.bind(this)
+    )
     // Send the startup message to worker.
     this.sendStartupMessageToWorker(workerNodeKey)
     // Send the statistics message to worker.
@@ -1488,25 +1491,21 @@ export abstract class AbstractPool<
   }
 
   /**
-   * This method is the listener registered for each worker message.
-   *
-   * @returns The listener function to execute when a message is received from a worker.
+   * This method is the message listener registered on each worker.
    */
-  protected workerListener (): (message: MessageValue<Response>) => void {
-    return message => {
-      this.checkMessageWorkerId(message)
-      if (message.ready != null && message.taskFunctionNames != null) {
-        // Worker ready response received from worker
-        this.handleWorkerReadyResponse(message)
-      } else if (message.taskId != null) {
-        // Task execution response received from worker
-        this.handleTaskExecutionResponse(message)
-      } else if (message.taskFunctionNames != null) {
-        // Task function names message received from worker
-        this.getWorkerInfo(
-          this.getWorkerNodeKeyByWorkerId(message.workerId)
-        ).taskFunctionNames = message.taskFunctionNames
-      }
+  protected workerMessageListener (message: MessageValue<Response>): void {
+    this.checkMessageWorkerId(message)
+    if (message.ready != null && message.taskFunctionNames != null) {
+      // Worker ready response received from worker
+      this.handleWorkerReadyResponse(message)
+    } else if (message.taskId != null) {
+      // Task execution response received from worker
+      this.handleTaskExecutionResponse(message)
+    } else if (message.taskFunctionNames != null) {
+      // Task function names message received from worker
+      this.getWorkerInfo(
+        this.getWorkerNodeKeyByWorkerId(message.workerId)
+      ).taskFunctionNames = message.taskFunctionNames
     }
   }