- /**
- *
- * @param elementData -
- * @returns
- * @public
- */
- public async addElement(elementData: WorkerData): Promise<void> {
- if (!this.workerSet) {
- throw new Error("Cannot add a WorkerSet element: workers' set does not exist");
- }
- if (
- this.workerSet.size === 0 ||
- this.getLastWorkerSetElement().numberOfWorkerElements >= this.workerOptions.elementsPerWorker
- ) {
- await this.startWorker();
- }
- this.getLastWorker().postMessage({
- id: WorkerMessageEvents.START_WORKER_ELEMENT,
- data: elementData,
- });
- this.getLastWorkerSetElement().numberOfWorkerElements++;
- // Start element sequentially to optimize memory at startup
- if (this.workerOptions.elementStartDelay > 0) {
- await Utils.sleep(this.workerOptions.elementStartDelay);
- }
- }
-
- /**
- *
- * @returns
- * @public
- */