- public async start(): Promise<void> {
- await this.startWorker();
- }
-
- /**
- *
- * @returns
- * @public
- */
- public async stop(): Promise<void> {
- for (const workerSetElement of this.workerSet) {
- await workerSetElement.worker.terminate();
- }
- this.workerSet.clear();
- }
-
- /**
- *
- * @private
- */
- private async startWorker(): Promise<void> {
- const worker = new Worker(this.workerScript);
- worker.on('message', (msg) => {
- (async () => {
- await this.messageHandler(msg);
- })().catch(() => {
- /* This is intentional */
- });
+ private addWorkerSetElement(): WorkerSetElement {
+ this.workerStartup = true;
+ const worker = new Worker(this.workerScript, {
+ env: SHARE_ENV,
+ ...this.workerOptions.poolOptions?.workerOptions,
+ });
+ worker.on('message', this.workerOptions.poolOptions?.messageHandler ?? EMPTY_FUNCTION);
+ worker.on('message', (message: WorkerMessage<WorkerData>) => {
+ if (message.event === WorkerMessageEvents.startedWorkerElement) {
+ this.emitter?.emit(WorkerSetEvents.elementStarted, this.info);
+ } else if (message.event === WorkerMessageEvents.startWorkerElementError) {
+ this.emitter?.emit(WorkerSetEvents.elementError, message.data);
+ }