- this.workerSet.add({ worker, numberOfWorkerElements: 0 });
- // Start worker sequentially to optimize memory at startup
- this.workerOptions.workerStartDelay > 0 && await Utils.sleep(this.workerOptions.workerStartDelay);
+ worker.on(
+ 'error',
+ this.workerOptions.poolOptions?.errorHandler ?? WorkerConstants.EMPTY_FUNCTION,
+ );
+ worker.on('error', (error) => {
+ this.emitter?.emit(WorkerSetEvents.error, error);
+ if (this.workerOptions.poolOptions?.restartWorkerOnError) {
+ this.addWorkerSetElement();
+ }
+ });
+ worker.on(
+ 'online',
+ this.workerOptions.poolOptions?.onlineHandler ?? WorkerConstants.EMPTY_FUNCTION,
+ );
+ worker.on(
+ 'exit',
+ this.workerOptions.poolOptions?.exitHandler ?? WorkerConstants.EMPTY_FUNCTION,
+ );
+ worker.once('exit', () =>
+ this.removeWorkerSetElement(this.getWorkerSetElementByWorker(worker)!),
+ );
+ const workerSetElement: WorkerSetElement = { worker, numberOfWorkerElements: 0 };
+ this.workerSet.add(workerSetElement);
+ return workerSetElement;