refactor: cleanup main worker checks
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 14 Aug 2023 14:34:52 +0000 (16:34 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 14 Aug 2023 14:34:52 +0000 (16:34 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/worker/abstract-worker.ts
src/worker/cluster-worker.ts
src/worker/thread-worker.ts

index 508d8689d5552a13b92960997f356898923f7728..911c31ca146b2bda5876eeaecdff7b114338fae3 100644 (file)
@@ -298,7 +298,9 @@ export abstract class AbstractWorker<
    * @param message - The received message.
    */
   protected messageListener (message: MessageValue<Data>): void {
-    if (message.workerId != null && message.workerId !== this.id) {
+    if (this.isMain) {
+      throw new Error('Cannot handle message to worker in main worker')
+    } else if (message.workerId != null && message.workerId !== this.id) {
       throw new Error('Message worker id does not match worker id')
     } else if (message.workerId === this.id) {
       if (message.statistics != null) {
@@ -306,9 +308,7 @@ export abstract class AbstractWorker<
         this.statistics = message.statistics
       } else if (message.checkActive != null) {
         // Check active message received
-        !this.isMain && message.checkActive
-          ? this.startCheckActive()
-          : this.stopCheckActive()
+        message.checkActive ? this.startCheckActive() : this.stopCheckActive()
       } else if (message.taskId != null && message.data != null) {
         // Task message received
         this.run(message)
@@ -325,11 +325,9 @@ export abstract class AbstractWorker<
    * @param message - The kill message.
    */
   protected handleKillMessage (message: MessageValue<Data>): void {
-    if (!this.isMain) {
-      this.stopCheckActive()
-      this.opts.killHandler?.()
-      this.emitDestroy()
-    }
+    this.stopCheckActive()
+    this.opts.killHandler?.()
+    this.emitDestroy()
   }
 
   /**
@@ -403,9 +401,6 @@ export abstract class AbstractWorker<
    * @throws {@link https://nodejs.org/api/errors.html#class-error} If the task function is not found.
    */
   protected run (task: Task<Data>): void {
-    if (this.isMain) {
-      throw new Error('Cannot run a task in the main worker')
-    }
     const fn = this.getTaskFunction(task.name)
     if (isAsyncFunction(fn)) {
       this.runInAsyncScope(this.runAsync.bind(this), this, fn, task)
@@ -537,7 +532,7 @@ export abstract class AbstractWorker<
   }
 
   private updateLastTaskTimestamp (): void {
-    if (!this.isMain && this.activeInterval != null) {
+    if (this.activeInterval != null) {
       this.lastTaskTimestamp = performance.now()
     }
   }
index 0ccc0013e9d0314425919bc86c3ea51c8da8e29d..08eb4e89c81e18e33d02ebae675395e3fe8b33d6 100644 (file)
@@ -43,7 +43,7 @@ export class ClusterWorker<
 
   /** @inheritDoc */
   protected handleReadyMessage (message: MessageValue<Data>): void {
-    if (!this.isMain && message.workerId === this.id && message.ready != null) {
+    if (message.workerId === this.id && message.ready != null) {
       this.getMainWorker()?.on('message', this.messageListener.bind(this))
       this.sendToMainWorker({ ready: true, workerId: this.id })
     }
index 4666fbc7590dda3974df88770b874703c0189e17..e208eb4063656dccf1ed25a8c12463c6de1302e5 100644 (file)
@@ -53,7 +53,6 @@ export class ThreadWorker<
   /** @inheritDoc */
   protected handleReadyMessage (message: MessageValue<Data>): void {
     if (
-      !this.isMain &&
       message.workerId === this.id &&
       message.ready != null &&
       message.port != null