X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2Fabstract-worker.ts;h=67b4b5ff9e4575ead2d824537fb106d6d0b5ba11;hb=a038b5175071af7c51dae9e25c7423c7572f3949;hp=a431f5a7fb0e9e72771dc848c0245fb775078854;hpb=209d7d1586c12f0c0e6faf58eb51b262464ecc60;p=poolifier.git diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index a431f5a7..67b4b5ff 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -66,17 +66,17 @@ export abstract class AbstractWorker< * * @param type - The type of async event. * @param isMain - Whether this is the main worker or not. - * @param taskFunctions - Task function(s) processed by the worker when the pool's `execution` function is invoked. The first function is the default function. * @param mainWorker - Reference to main worker. + * @param taskFunctions - Task function(s) processed by the worker when the pool's `execution` function is invoked. The first function is the default function. * @param opts - Options for the worker. */ public constructor ( type: string, protected readonly isMain: boolean, + private readonly mainWorker: MainWorker, taskFunctions: | WorkerFunction | TaskFunctions, - protected readonly mainWorker: MainWorker, protected readonly opts: WorkerOptions = { /** * The kill behavior option on this worker or its default value. @@ -93,7 +93,7 @@ export abstract class AbstractWorker< this.checkWorkerOptions(this.opts) this.checkTaskFunctions(taskFunctions) if (!this.isMain) { - this.mainWorker?.on('message', this.messageListener.bind(this)) + this.getMainWorker()?.on('message', this.handleReadyMessage.bind(this)) } } @@ -284,17 +284,21 @@ export abstract class AbstractWorker< } } + /** + * Handles the ready message sent by the main worker. + * + * @param message - The ready message. + */ + protected abstract handleReadyMessage (message: MessageValue): void + /** * Worker message listener. * * @param message - The received message. */ - protected messageListener (message: MessageValue): void { + protected messageListener (message: MessageValue): void { if (message.workerId === this.id) { - if (message.ready != null) { - // Startup message received - this.sendReadyResponse() - } else if (message.statistics != null) { + if (message.statistics != null) { // Statistics message received this.statistics = message.statistics } else if (message.checkActive != null) { @@ -313,13 +317,6 @@ export abstract class AbstractWorker< } } - /** - * Sends the ready response to the main worker. - */ - protected sendReadyResponse (): void { - !this.isMain && this.sendToMainWorker({ ready: true, workerId: this.id }) - } - /** * Starts the worker check active interval. */