X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2FWorkerFactory.ts;h=41fa1d89715444ca5cd69b07f6684789f63b2ecc;hb=ce4d00ee7295ccdb12f35154eb2eb72973b6e75b;hp=d71e4227841d5072778c2a7a8a71d256e12ae1e3;hpb=8434025b7338b3439180ed7c2bed888fc42e04d3;p=e-mobility-charging-stations-simulator.git diff --git a/src/worker/WorkerFactory.ts b/src/worker/WorkerFactory.ts index d71e4227..41fa1d89 100644 --- a/src/worker/WorkerFactory.ts +++ b/src/worker/WorkerFactory.ts @@ -1,13 +1,17 @@ import { WorkerOptions, WorkerProcessType } from '../types/Worker'; import Utils from '../utils/Utils'; +import WorkerAbstract from './WorkerAbstract'; import WorkerDynamicPool from './WorkerDynamicPool'; import WorkerSet from './WorkerSet'; import WorkerStaticPool from './WorkerStaticPool'; -import Wrk from './Wrk'; +import { isMainThread } from 'worker_threads'; export default class WorkerFactory { - public static getWorkerImpl(workerScript: string, workerProcessType: WorkerProcessType, options?: WorkerOptions): Wrk { + public static getWorkerImplementation(workerScript: string, workerProcessType: WorkerProcessType, options?: WorkerOptions): WorkerAbstract { + if (!isMainThread) { + throw new Error('Trying to get a worker implementation outside the main thread'); + } if (Utils.isUndefined(options)) { options = {} as WorkerOptions; } @@ -19,15 +23,15 @@ export default class WorkerFactory { return new WorkerSet(workerScript, options.elementsPerWorker); case WorkerProcessType.STATIC_POOL: if (Utils.isUndefined(options.poolMaxSize)) { - options.elementsPerWorker = 16; + options.poolMaxSize = 16; } return new WorkerStaticPool(workerScript, options.poolMaxSize); case WorkerProcessType.DYNAMIC_POOL: if (Utils.isUndefined(options.poolMinSize)) { - options.elementsPerWorker = 4; + options.poolMinSize = 4; } if (Utils.isUndefined(options.poolMaxSize)) { - options.elementsPerWorker = 16; + options.poolMaxSize = 16; } return new WorkerDynamicPool(workerScript, options.poolMinSize, options.poolMaxSize); default: