X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fworker-node.ts;h=59c4de7a388e81434c373f1835b144c1b3c88f57;hb=8d0e8c50707b1c0045c6d2072a4deb18dd857a68;hp=3de3cb809cda9a3a3f2787579371a467e3f9d200;hpb=6349b7551b1060472ed8c97dd01ef0c827d62278;p=poolifier.git diff --git a/src/pools/worker-node.ts b/src/pools/worker-node.ts index 3de3cb80..59c4de7a 100644 --- a/src/pools/worker-node.ts +++ b/src/pools/worker-node.ts @@ -1,4 +1,5 @@ import { MessageChannel } from 'node:worker_threads' +import { EventEmitter } from 'node:events' import { CircularArray } from '../circular-array' import type { Task } from '../utility-types' import { DEFAULT_TASK_NAME, getWorkerId, getWorkerType } from '../utils' @@ -8,7 +9,6 @@ import { type IWorkerNode, type StrategyData, type WorkerInfo, - type WorkerNodeEventDetail, type WorkerType, WorkerTypes, type WorkerUsage @@ -22,7 +22,7 @@ import { checkWorkerNodeArguments } from './utils' * @typeParam Data - Type of data sent to the worker. This can only be structured-cloneable data. */ export class WorkerNode - extends EventTarget + extends EventEmitter implements IWorkerNode { /** @inheritdoc */ public readonly worker: Worker @@ -71,11 +71,7 @@ export class WorkerNode const tasksQueueSize = this.tasksQueue.push(task) if (this.hasBackPressure() && !this.onBackPressureStarted) { this.onBackPressureStarted = true - this.dispatchEvent( - new CustomEvent('backPressure', { - detail: { workerId: this.info.id as number } - }) - ) + this.emit('backPressure', { workerId: this.info.id as number }) this.onBackPressureStarted = false } return tasksQueueSize @@ -86,11 +82,7 @@ export class WorkerNode const tasksQueueSize = this.tasksQueue.unshift(task) if (this.hasBackPressure() && !this.onBackPressureStarted) { this.onBackPressureStarted = true - this.dispatchEvent( - new CustomEvent('backPressure', { - detail: { workerId: this.info.id as number } - }) - ) + this.emit('backPressure', { workerId: this.info.id as number }) this.onBackPressureStarted = false } return tasksQueueSize