X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2FWorkerDynamicPool.ts;h=5217d7fe16a6772a81b946969702fe1189f0d5dc;hb=3b09e788c6dab8e5a8b3314e8e69ede16ff82fcc;hp=2043297318c38e8d298a76c9d660b4d215bc8d71;hpb=8ae4dcf159bf29835de7fd1edd7978aa8a3ee76b;p=e-mobility-charging-stations-simulator.git diff --git a/src/worker/WorkerDynamicPool.ts b/src/worker/WorkerDynamicPool.ts index 20432973..5217d7fe 100644 --- a/src/worker/WorkerDynamicPool.ts +++ b/src/worker/WorkerDynamicPool.ts @@ -6,8 +6,11 @@ import { WorkerAbstract } from './WorkerAbstract.js' import type { WorkerData, WorkerOptions } from './WorkerTypes.js' import { randomizeDelay, sleep } from './WorkerUtils.js' -export class WorkerDynamicPool extends WorkerAbstract { - private readonly pool: DynamicThreadPool +export class WorkerDynamicPool extends WorkerAbstract< +D, +R +> { + private readonly pool: DynamicThreadPool /** * Creates a new `WorkerDynamicPool`. @@ -17,7 +20,7 @@ export class WorkerDynamicPool extends WorkerAbstract { */ constructor (workerScript: string, workerOptions: WorkerOptions) { super(workerScript, workerOptions) - this.pool = new DynamicThreadPool( + this.pool = new DynamicThreadPool( this.workerOptions.poolMinSize, this.workerOptions.poolMaxSize, this.workerScript, @@ -52,12 +55,13 @@ export class WorkerDynamicPool extends WorkerAbstract { } /** @inheritDoc */ - public async addElement (elementData: WorkerData): Promise { - await this.pool.execute(elementData) + public async addElement (elementData: D): Promise { + const response = await this.pool.execute(elementData) // Start element sequentially to optimize memory at startup // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.workerOptions.elementAddDelay! > 0 && // eslint-disable-next-line @typescript-eslint/no-non-null-assertion (await sleep(randomizeDelay(this.workerOptions.elementAddDelay!))) + return response } }