/**
* 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,
private async sendKillMessageToWorker (workerNodeKey: number): Promise<void> {
await new Promise<void>((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<Response>): void => {
*
* @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.
}
}
- 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.