import chalk from 'chalk';
import { availableParallelism } from 'poolifier';
-import { waitChargingStationEvents } from './ChargingStationUtils';
+import { waitChargingStationEvents } from './Helpers';
import type { AbstractUIServer } from './ui-server/AbstractUIServer';
import { UIServerFactory } from './ui-server/UIServerFactory';
import { version } from '../../package.json' assert { type: 'json' };
const moduleName = 'Bootstrap';
enum exitCodes {
+ succeeded = 0,
missingChargingStationsConfiguration = 1,
noChargingStationTemplates = 2,
+ gracefulShutdownError = 3,
}
export class Bootstrap extends EventEmitter {
performanceStorageConfiguration.uri!,
this.logPrefix(),
));
- Configuration.setConfigurationChangeCallback(async () => Bootstrap.getInstance().restart());
+ Configuration.configurationChangeCallback = async () => Bootstrap.getInstance().restart();
}
public static getInstance(): Bootstrap {
public async start(): Promise<void> {
if (!isMainThread) {
- throw new Error('Cannot start charging stations simulator from worker thread');
+ throw new BaseError('Cannot start charging stations simulator from worker thread');
}
if (this.started === false) {
if (this.starting === false) {
public async stop(): Promise<void> {
if (!isMainThread) {
- throw new Error('Cannot stop charging stations simulator from worker thread');
+ throw new BaseError('Cannot stop charging stations simulator from worker thread');
}
if (this.started === true) {
if (this.stopping === false) {
this.uiServer.buildProtocolRequest(
generateUUID(),
ProcedureName.STOP_CHARGING_STATION,
- Constants.EMPTY_FREEZED_OBJECT,
+ Constants.EMPTY_FROZEN_OBJECT,
),
);
await Promise.race([
if (workerConfiguration?.elementsPerWorker === 'auto') {
elementsPerWorker =
this.numberOfChargingStations > availableParallelism()
- ? Math.round(this.numberOfChargingStations / availableParallelism())
+ ? Math.round(this.numberOfChargingStations / (availableParallelism() * 1.5))
: 1;
}
this.workerImplementation === null &&
console.info(`${chalk.green('Graceful shutdown')}`);
this.stop()
.then(() => {
- process.exit(0);
+ process.exit(exitCodes.succeeded);
})
.catch((error) => {
console.error(chalk.red('Error while shutdowning charging stations simulator: '), error);
- process.exit(1);
+ process.exit(exitCodes.gracefulShutdownError);
});
};