import type { TasksQueueOptions } from './pool'
import {
type IWorker,
+ type IWorkerNode,
type MeasurementStatistics,
type WorkerNodeOptions,
type WorkerType,
'Cannot construct a worker node without worker node options'
)
}
- if (opts != null && !isPlainObject(opts)) {
+ if (!isPlainObject(opts)) {
throw new TypeError(
'Cannot construct a worker node with invalid options: must be a plain object'
)
throw new Error(`Unknown worker type '${type}'`)
}
}
+
+export const waitWorkerNodeEvents = async <
+ Worker extends IWorker,
+ Data = unknown
+>(
+ workerNode: IWorkerNode<Worker, Data>,
+ workerNodeEvent: string,
+ numberOfEventsToWait: number
+): Promise<number> => {
+ return await new Promise<number>(resolve => {
+ let events = 0
+ if (numberOfEventsToWait === 0) {
+ resolve(events)
+ return
+ }
+ workerNode.on(workerNodeEvent, () => {
+ ++events
+ if (events === numberOfEventsToWait) {
+ resolve(events)
+ }
+ })
+ })
+}