X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fdynamic.ts;h=b4c6bddf30e8e9c964cb1038a05a7788d6bce589;hb=b9cca0059334f11740d3dfbc7bc07cd4432d1af4;hp=211141ca5535e0a864d22d38c8ee167e0930dc8f;hpb=db274bfd5662a85eb7bbcac6e59701cf00444775;p=poolifier.git diff --git a/src/dynamic.ts b/src/dynamic.ts index 211141ca..b4c6bddf 100644 --- a/src/dynamic.ts +++ b/src/dynamic.ts @@ -1,12 +1,10 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ - -import FixedThreadPool, { +import { EventEmitter } from 'events' +import { + FixedThreadPool, FixedThreadPoolOptions, WorkerWithMessageChannel } from './fixed' -import { EventEmitter } from 'events' - class MyEmitter extends EventEmitter {} export type DynamicThreadPoolOptions = FixedThreadPoolOptions @@ -20,10 +18,12 @@ export type DynamicThreadPoolOptions = FixedThreadPoolOptions * @author [Alessandro Pio Ardizio](https://github.com/pioardi) * @since 0.0.1 */ -export default class DynamicThreadPool< +/* eslint-disable @typescript-eslint/no-explicit-any */ +export class DynamicThreadPool< Data = any, Response = any > extends FixedThreadPool { + /* eslint-enable @typescript-eslint/no-explicit-any */ public readonly emitter: MyEmitter /** @@ -43,7 +43,7 @@ export default class DynamicThreadPool< this.emitter = new MyEmitter() } - protected _chooseWorker (): WorkerWithMessageChannel { + protected chooseWorker (): WorkerWithMessageChannel { let worker: WorkerWithMessageChannel | undefined for (const entry of this.tasks) { if (entry[1] === 0) { @@ -58,14 +58,13 @@ export default class DynamicThreadPool< } else { if (this.workers.length === this.max) { this.emitter.emit('FullPool') - return super._chooseWorker() + return super.chooseWorker() } // all workers are busy create a new worker - const worker = this._newWorker() + const worker = this.newWorker() worker.port2?.on('message', (message: { kill?: number }) => { if (message.kill) { worker.postMessage({ kill: 1 }) - // eslint-disable-next-line no-void void worker.terminate() // clean workers from data structures const workerIndex = this.workers.indexOf(worker) @@ -77,5 +76,3 @@ export default class DynamicThreadPool< } } } - -module.exports = DynamicThreadPool