roundTo,
secureRandom,
sleep,
- // watchJsonFile,
+ watchJsonFile,
} from '../utils';
export class ChargingStation extends EventEmitter {
}
this.openWSConnection();
// Monitor charging station template file
- // FIXME: Disabled until the spurious configuration file change detection is identified
- // this.templateFileWatcher = watchJsonFile(
- // this.templateFile,
- // FileType.ChargingStationTemplate,
- // this.logPrefix(),
- // undefined,
- // (event, filename): void => {
- // if (isNotEmptyString(filename) && event === 'change') {
- // try {
- // logger.debug(
- // `${this.logPrefix()} ${FileType.ChargingStationTemplate} ${
- // this.templateFile
- // } file have changed, reload`,
- // );
- // this.sharedLRUCache.deleteChargingStationTemplate(this.templateFileHash);
- // // Initialize
- // this.initialize();
- // this.idTagsCache.deleteIdTags(getIdTagsFile(this.stationInfo)!);
- // // Restart the ATG
- // this.stopAutomaticTransactionGenerator()
- // .then(() => {
- // delete this.automaticTransactionGeneratorConfiguration;
- // if (this.getAutomaticTransactionGeneratorConfiguration()?.enable === true) {
- // this.startAutomaticTransactionGenerator();
- // }
- // })
- // .catch((err) =>
- // logger.error(
- // `${this.logPrefix()} failed to stop ATG at ${
- // FileType.ChargingStationTemplate
- // } reload`,
- // err,
- // ),
- // );
- // if (this.getEnableStatistics() === true) {
- // this.performanceStatistics?.restart();
- // } else {
- // this.performanceStatistics?.stop();
- // }
- // // FIXME?: restart heartbeat and WebSocket ping when their interval values have changed
- // } catch (error) {
- // logger.error(
- // `${this.logPrefix()} ${FileType.ChargingStationTemplate} file monitoring error:`,
- // error,
- // );
- // }
- // }
- // },
- // );
+ this.templateFileWatcher = watchJsonFile(
+ this.templateFile,
+ FileType.ChargingStationTemplate,
+ this.logPrefix(),
+ undefined,
+ (event, filename): void => {
+ if (isNotEmptyString(filename) && event === 'change') {
+ try {
+ logger.debug(
+ `${this.logPrefix()} ${FileType.ChargingStationTemplate} ${
+ this.templateFile
+ } file have changed, reload`,
+ );
+ this.sharedLRUCache.deleteChargingStationTemplate(this.templateFileHash);
+ // Initialize
+ this.initialize();
+ this.idTagsCache.deleteIdTags(getIdTagsFile(this.stationInfo)!);
+ // Restart the ATG
+ this.stopAutomaticTransactionGenerator();
+ delete this.automaticTransactionGeneratorConfiguration;
+ if (this.getAutomaticTransactionGeneratorConfiguration()?.enable === true) {
+ this.startAutomaticTransactionGenerator();
+ }
+ if (this.getEnableStatistics() === true) {
+ this.performanceStatistics?.restart();
+ } else {
+ this.performanceStatistics?.stop();
+ }
+ // FIXME?: restart heartbeat and WebSocket ping when their interval values have changed
+ } catch (error) {
+ logger.error(
+ `${this.logPrefix()} ${FileType.ChargingStationTemplate} file monitoring error:`,
+ error,
+ );
+ }
+ }
+ },
+ );
this.started = true;
this.emit(ChargingStationEvents.started);
this.starting = false;
handleFileException,
isNotEmptyString,
logPrefix,
- // logger,
+ logger,
secureRandom,
- // watchJsonFile,
+ watchJsonFile,
} from '../utils';
interface IdTagsCacheValueType {
idTags: string[];
- idTagsFileWatcher?: FSWatcher | undefined;
+ idTagsFileWatcher: FSWatcher | undefined;
}
export class IdTagsCache {
private setIdTagsCache(file: string, idTags: string[]) {
return this.idTagsCaches.set(file, {
idTags,
- // FIXME: Disabled until the spurious configuration file change detection is identified
- // idTagsFileWatcher: watchJsonFile(
- // file,
- // FileType.Authorization,
- // this.logPrefix(file),
- // undefined,
- // (event, filename) => {
- // if (isNotEmptyString(filename) && event === 'change') {
- // try {
- // logger.debug(
- // `${this.logPrefix(file)} ${FileType.Authorization} file have changed, reload`,
- // );
- // this.deleteIdTagsCache(file);
- // this.deleteIdTagsCacheIndexes(file);
- // } catch (error) {
- // handleFileException(
- // file,
- // FileType.Authorization,
- // error as NodeJS.ErrnoException,
- // this.logPrefix(file),
- // {
- // throwError: false,
- // },
- // );
- // }
- // }
- // },
- // ),
+ idTagsFileWatcher: watchJsonFile(
+ file,
+ FileType.Authorization,
+ this.logPrefix(file),
+ undefined,
+ (event, filename) => {
+ if (isNotEmptyString(filename) && event === 'change') {
+ try {
+ logger.debug(
+ `${this.logPrefix(file)} ${FileType.Authorization} file have changed, reload`,
+ );
+ this.deleteIdTagsCache(file);
+ this.deleteIdTagsCacheIndexes(file);
+ } catch (error) {
+ handleFileException(
+ file,
+ FileType.Authorization,
+ error as NodeJS.ErrnoException,
+ this.logPrefix(file),
+ {
+ throwError: false,
+ },
+ );
+ }
+ }
+ },
+ ),
});
}
Configuration.configurationData = JSON.parse(
readFileSync(Configuration.configurationFile, 'utf8'),
) as ConfigurationData;
- // FIXME: Disabled until the spurious configuration file change detection is identified
- // if (!Configuration.configurationFileWatcher) {
- // Configuration.configurationFileWatcher = Configuration.getConfigurationFileWatcher();
- // }
+ if (!Configuration.configurationFileWatcher) {
+ Configuration.configurationFileWatcher = Configuration.getConfigurationFileWatcher();
+ }
} catch (error) {
Configuration.handleFileException(
Configuration.configurationFile,