X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fabstract-pool.ts;h=cfef89e32b568da13e28a5f4fdb77230dccaefb6;hb=d1c03778bd26af064147055fc21d6701ffefb707;hp=cc9408f2fed30acb97a0dfdca34d0994c245227e;hpb=af7f2788b6fcc39343d544551cf17c8f0dc5b757;p=poolifier.git diff --git a/src/pools/abstract-pool.ts b/src/pools/abstract-pool.ts index cc9408f2..cfef89e3 100644 --- a/src/pools/abstract-pool.ts +++ b/src/pools/abstract-pool.ts @@ -130,10 +130,10 @@ export abstract class AbstractPool< /** * Constructs a new poolifier pool. * - * @param minimumNumberOfWorkers - Minimum number of workers that this pool should manage. + * @param minimumNumberOfWorkers - Minimum number of workers that this pool manages. * @param filePath - Path to the worker file. * @param opts - Options for the pool. - * @param maximumNumberOfWorkers - Maximum number of workers that this pool should manage. + * @param maximumNumberOfWorkers - Maximum number of workers that this pool manages. */ public constructor ( protected readonly minimumNumberOfWorkers: number, @@ -984,8 +984,8 @@ export abstract class AbstractPool< private async sendKillMessageToWorker (workerNodeKey: number): Promise { await new Promise((resolve, reject) => { - if (workerNodeKey < 0 || workerNodeKey >= this.workerNodes.length) { - reject(new Error(`Invalid worker node key '${workerNodeKey}'`)) + if (this.workerNodes?.[workerNodeKey] == null) { + resolve() return } const killMessageListener = (message: MessageValue): void => { @@ -1178,9 +1178,7 @@ export abstract class AbstractPool< * * @returns Whether to create a dynamic worker or not. */ - private shallCreateDynamicWorker (): boolean { - return this.type === PoolTypes.dynamic && !this.full && this.internalBusy() - } + protected abstract shallCreateDynamicWorker (): boolean /** * Sends a message to worker given its worker node key. @@ -1729,13 +1727,10 @@ export abstract class AbstractPool< } } - private checkAndEmitDynamicWorkerCreationEvents (): void { - if (this.type === PoolTypes.dynamic) { - if (this.full) { - this.emitter?.emit(PoolEvents.full, this.info) - } - } - } + /** + * Emits dynamic worker creation events. + */ + protected abstract checkAndEmitDynamicWorkerCreationEvents (): void /** * Gets the worker information given its worker node key.