- protected internalExecute (
- worker: WorkerWithMessageChannel,
- id: number
- ): Promise<Response> {
- return new Promise((resolve, reject) => {
- const listener: (message: MessageValue<Response>) => void = message => {
- if (message.id === id) {
- worker.port2?.removeListener('message', listener)
- const previousWorkerIndex = this.tasks.get(worker)
- if (previousWorkerIndex !== undefined) {
- this.tasks.set(worker, previousWorkerIndex + 1)
- } else {
- throw Error('Worker could not be found in tasks map')
- }
- if (message.error) reject(message.error)
- else resolve(message.data as Response)
- }
- }
- worker.port2?.on('message', listener)
- })
+ /** @inheritDoc */
+ protected sendStartupMessageToWorker (workerNodeKey: number): void {
+ const workerNode = this.workerNodes[workerNodeKey]
+ const worker = workerNode.worker
+ const port2: MessagePort = (workerNode.messageChannel as MessageChannel)
+ .port2
+ worker.postMessage(
+ {
+ ready: false,
+ workerId: workerNode.info.id,
+ port: port2
+ },
+ [port2]
+ )