*
* @param {String} workerScript
* @param {Object} workerData
+ * @param {Number} numConcurrentWorkers
*/
- constructor(workerScript, workerData) {
+ constructor(workerScript, workerData, numConcurrentWorkers) {
+ this._workerData = workerData;
+ this._workerScript = workerScript;
+ this._numConcurrentWorkers = numConcurrentWorkers;
if (Configuration.useWorkerPool()) {
this._pool = new Pool({max: Configuration.getWorkerPoolSize()});
}
- this._workerData = workerData;
- this._workerScript = workerScript;
+ }
+
+ /**
+ * @param {Number} numConcurrentWorkers
+ * @private
+ */
+ // eslint-disable-next-line class-methods-use-this
+ set _numConcurrentWorkers(numConcurrentWorkers) {
+ if (numConcurrentWorkers > 10) {
+ EventEmitter.defaultMaxListeners = numConcurrentWorkers + 1;
+ }
+ this._concurrentWorkers = numConcurrentWorkers;
+ }
+
+ // eslint-disable-next-line class-methods-use-this
+ get _numConcurrentWorkers() {
+ return this._concurrentWorkers;
}
/**
*/
start() {
if (Configuration.useWorkerPool()) {
- if (Configuration.getWorkerPoolSize() > 10) {
- EventEmitter.defaultMaxListeners = Configuration.getWorkerPoolSize() + 1;
- }
return this._startWorkerWithPool();
}
return this._startWorker();
logger.info('%s Configuration: %j', Utils.basicFormatLog(), Configuration.getConfig());
// Start each ChargingStation object in a worker thread
if (Configuration.getChargingStationTemplateURLs()) {
+ let numStationsTotal = 0;
Configuration.getChargingStationTemplateURLs().forEach((stationURL) => {
try {
// load file
const stationTemplate = JSON.parse(fs.readFileSync(fileDescriptor, 'utf8'));
fs.closeSync(fileDescriptor);
const nbStation = (stationURL.numberOfStation ? stationURL.numberOfStation : 0);
+ numStationsTotal += nbStation;
for (let index = 1; index <= nbStation; index++) {
const worker = new Wrk('./src/charging-station/StationWorker.js', {
index,
template: JSON.parse(JSON.stringify(stationTemplate)),
- });
+ }, numStationsTotal);
worker.start();
}
} catch (error) {
const worker = new Wrk('./src/charging-station/StationWorker.js', {
index,
template: JSON.parse(JSON.stringify(Configuration.getChargingStationTemplate())),
- });
+ }, nbStation);
worker.start();
}
}